Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从稀疏矩阵获取向量的最佳方法

我有一个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

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 05:00


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