matlab 通过复制三元组格式的稀疏矩阵的下三角形来创建完整的对称矩阵

pftdvrlh  于 11个月前  发布在  Matlab
关注(0)|答案(2)|浏览(139)

如主题行所示,将稀疏矩阵的下三角部分复制到上三角部分并完成矩阵元素以创建对称稀疏矩阵的最有效方法是什么?
假设下三角形有三元组I,J,X,包括对角线,我从一个商业程序中阅读这些数组,出于存储空间的原因,我相信它们只存储下三角形的部分。
好吧,我将很快开始测试不同的选项,但想看看是否有人经历过这种情况。

fykwrbwg

fykwrbwg1#

可以使用sparse

idx = I ~= J; %index of nondiagonals
result = sparse([I;J(idx)], [J;I(idx)], [X;X(idx)]);

字符串
由于sparseX中具有IJ中重复下标的元素相加,因此在连接向量时排除对角元素。

eimct9ow

eimct9ow2#

另一种方法来评估这个问题,这是我通常做的,是使用以下代码:

L = sparse(I, J, X, n, n);
S = L + L' - diag(L);

字符串
其中L是下三角矩阵,S是所需的对称矩阵,n是全方阵的行数/列数。

相关问题