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

问题描述 投票:0回答:2

正如主题所示,将稀疏矩阵的下三角部分复制到上三角部分并完成矩阵条目以创建对称稀疏矩阵的最有效方法是什么?

假设我有三元组 I、J、X 表示下三角形(包括对角线)。我正在从商业程序中读取这些数组,出于存储空间的原因,我相信它们只存储下三角形部分。

好吧,我很快就会开始测试不同的选项,但想看看其他人以前是否经历过这种情况。

matlab matrix sparse-matrix
2个回答
0
投票

您可以使用稀疏

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

因为

sparse
X
中在
I
J
中具有重复下标的元素相加,所以我们在连接向量时排除对角线元素。


0
投票

解决此问题的另一种方法(我通常这样做)是使用以下代码:

L = sparse(I, J, X, n, n);
S = (L + L')/2;

其中

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

© www.soinside.com 2019 - 2024. All rights reserved.