Z-счет по всей матрице в Matlab - PullRequest
0 голосов
/ 09 сентября 2018

Как бы я вычислил z-показатель всей трехмерной матрицы в Matlab?

Команда Matlab zscore стандартизирует по векторам только одно из измерений многомерных массивов.

zscore документация: https://uk.mathworks.com/help/stats/zscore.html

1 Ответ

0 голосов
/ 10 сентября 2018

Здесь я показываю два эквивалентных метода:

  1. Вы можете edit zscore посмотреть, как работает функция, или документация, связанная с вашим вопросом, дает уравнение для zscore:

    zscore

    Мы можем вычислить это вручную, используя mean и std (стандартное отклонение).

    M = rand( 3, 5 ) * 10
    >> M =
       9.5929       1.4929       2.5428       9.2926       2.5108
       5.4722       2.5751       8.1428       3.4998       6.1604
       1.3862       8.4072       2.4352        1.966       4.7329
    
    Z = ( M - mean(M(:)) ) / std(M(:)) % using M(:) to operate on the array as a vector
    >> Z =
       1.6598      -1.0771     -0.72235       1.5583     -0.73316
      0.26743     -0.71145       1.1698     -0.39899          0.5
      -1.1131       1.2591      -0.7587     -0.91727     0.017644   
    

    Преимущество этого метода в том, что вам не нужно использовать набор инструментов статистики, требуемый для zscore. Этот незначительный недостаток состоит в том, что вы теряете проверку ввода zscore и защиту, если стандартное отклонение равно 0.

  2. Если вы хотите использовать zscore, тогда вы можете использовать reshape, после вычисления zscore, как если бы это был вектор:

    Z = reshape( zscore(M(:)), size(M) )
    >> Z =
       1.6598      -1.0771     -0.72235       1.5583     -0.73316    
      0.26743     -0.71145       1.1698     -0.39899          0.5
      -1.1131       1.2591      -0.7587     -0.91727     0.017644   
    

Обратите внимание, что оба эти метода должны вести себя так же, как и стандартный zscore(M) для векторного ввода M.

...