我有一个mxn矩阵,其中每一行都包含零和每行相同的值。
一个例子是:
M = [-0.6 1.8 -2.3 0 0 0; 0 0 0 3.4 -3.8 -4.3; -0.6 0 0 3.4 0 0] 在此示例中,第一列由0 s和-0.6 ,第二列0和1.8 ,第三列-2.3等等。
在这种情况下,我想将m减小为1(从给定的矩阵中获得一个向量),因此在此示例中,向量将为[-0.6 1.8 -2.3 3.4 -3.8 -4.3]
有谁知道从这样的矩阵中获取向量的最佳方法是什么?
谢谢!
回答:
这是使用函数
SUM的单行代码:
nonZeroColumnValues = sum(M)./sum(M ~= 0); 这将返回一个1-by-n向量,其中包含来自每一列的重复的非零值。通过对每一列求和,然后将结果除以每一列中非零值的数量来做到这一点。如果一列中没有非零值,则该列的结果将为
NaN 。
这是在问题中使用样本矩阵M的示例:
>> M = [-0.6 1.8 -2.3 0 0 0; 0 0 0 3.4 -3.8 -4.3; -0.6 0 0 3.4 0 0] M = -0.6000 1.8000 -2.3000 0 0 0 0 0 0 3.4000 -3.8000 -4.3000 -0.6000 0 0 3.4000 0 0 >> nonZeroColumnValues = sum(M)./sum(M ~= 0) nonZeroColumnValues = -0.6000 1.8000 -2.3000 3.4000 -3.8000 -4.3000
更多&回答...