如主题行所示,将稀疏矩阵的下三角部分复制到上三角部分并完成矩阵元素以创建对称稀疏矩阵的最有效方法是什么?假设下三角形有三元组I,J,X,包括对角线,我从一个商业程序中阅读这些数组,出于存储空间的原因,我相信它们只存储下三角形的部分。好吧,我将很快开始测试不同的选项,但想看看是否有人经历过这种情况。
fykwrbwg1#
可以使用sparse:
idx = I ~= J; %index of nondiagonals result = sparse([I;J(idx)], [J;I(idx)], [X;X(idx)]);
字符串由于sparse将X中具有I和J中重复下标的元素相加,因此在连接向量时排除对角元素。
sparse
X
I
J
eimct9ow2#
另一种方法来评估这个问题,这是我通常做的,是使用以下代码:
L = sparse(I, J, X, n, n); S = L + L' - diag(L);
字符串其中L是下三角矩阵,S是所需的对称矩阵,n是全方阵的行数/列数。
L
S
n
2条答案
按热度按时间fykwrbwg1#
可以使用sparse:
字符串
由于
sparse
将X
中具有I
和J
中重复下标的元素相加,因此在连接向量时排除对角元素。eimct9ow2#
另一种方法来评估这个问题,这是我通常做的,是使用以下代码:
字符串
其中
L
是下三角矩阵,S
是所需的对称矩阵,n
是全方阵的行数/列数。