Matlab中整个矩阵的Z得分

时间:2018-09-09 18:25:30

标签: matlab matrix multidimensional-array normalization

如何在Matlab中计算整个3维矩阵的z得分?

Matlab命令zscore仅在多维数组的维度之一上跨向量标准化。

zscore文档:https://uk.mathworks.com/help/stats/zscore.html

1 个答案:

答案 0 :(得分:3)

这里显示了两个等效的方法:

  1. 您可以edit zscore查看该函数的工作方式,或者问题中链接的文档给出了zscore的等式:

    zscore

    我们可以使用meanstd(标准偏差)手动进行计算。

    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相同。