MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   从稀疏矩阵获取向量的最佳方法 (https://www.labfans.com/bbs/showthread.php?t=23317)

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]

有谁知道从这样的矩阵中获取向量的最佳方法是什么?

谢谢!



[B]回答:[/B]

这是使用函数[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html"]SUM[/URL]的单行代码:

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

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

[url=https://stackoverflow.com/questions/2645038]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:57

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.