如何在Matlab中计算整个3维矩阵的z得分?
Matlab命令zscore
仅在多维数组的维度之一上跨向量标准化。
答案 0 :(得分:3)
这里显示了两个等效的方法:
您可以edit 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,则无法提供保护。
如果要使用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
相同。