Matlab关于稀疏矩阵的问题

Posted

技术标签:

【中文标题】Matlab关于稀疏矩阵的问题【英文标题】:Matlab Question on Sparse Matrices 【发布时间】:2011-07-09 18:10:51 【问题描述】:

我有一个稀疏矩阵 S。 我执行以下操作 D1 = diag(sum(S,2)),基本形成对角矩阵。 现在我需要执行(D1)^(-0.5),但出现错误 “使用 mpower 时出错,请使用 full(x)^full(y)”

转换为完整矩阵会破坏使用稀疏矩阵的目的。

任何建议都会很有帮助。

【问题讨论】:

【参考方案1】:

对角矩阵的幂可以简单地通过对对角元素逐元素进行操作来完成......所以:

D1_diagonal_elements = sum(S,2);
your_result = diag(D1_diagonal_elements .^ (-0.5));

【讨论】:

谢谢,我试过了,但得到“使用电源错误,内存不足” 它适用于积极力量,消极力量我得到了那个错误。 嗯...那是一个相当大的矩阵,甚至完整的对角线都不适合内存:) 原因很可能是因为 x.^(-0.5)==1/sqrt(x ),稀疏对角线的所有零元素都转换为 Inf,实际上将向量转换为一个完整的向量。顺便说一句:你想用结果做什么?你能先收集非零元素,然后去掉剩余的 Inf 吗? 好吧,我正在尝试在一个大型矩阵上执行联合聚类。为此,使用 Dhillon 算法,我首先需要将稀疏输入矩阵转换为 X = D1_rootAD2_root,其中 D1_root = abs((D1)^(-0.5)) 和 D2_root 类似. D1 = diag(sum(A,2)),D2 = diag(sum(A,1))。 A 是输入稀疏矩阵。我明白你在说什么,让我试试别的。非常感谢!

以上是关于Matlab关于稀疏矩阵的问题的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 稀疏矩阵

关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本

matlab稀疏矩阵

MATLAB Coder:稀疏矩阵

图像去噪基于matlab稀疏表示KSVD图像去噪含Matlab源码 2016期

关于MATLAB中稀疏表示的K-SVD算法的疑问,跪求各位大神指点,感激不尽,详细内容见问题补充