登录论坛

查看完整版本 : 从稀疏矩阵获取向量的最佳方法


poster
2019-12-10, 20:30
我有一个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 (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html)的单行代码:

nonZeroColumnValues = sum(M)./sum(M ~= 0); 这将返回一个1-by-n向量,其中包含来自每一列的重复的非零值。通过对每一列求和,然后将结果除以每一列中非零值的数量来做到这一点。如果一列中没有非零值,则该列的结果将为NaN (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/nan.html) 。

这是在问题中使用样本矩阵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

更多&回答... (https://stackoverflow.com/questions/2645038)