我有两个矩阵A和B.
B只是一个矩阵,只有一个对角线元素不为零。所有非对角元素也都为零。我必须计算$ A ^ { - 1} B $。我的$ A ^ { - 1} B $矩阵很稀疏。在matlab中,我可以做A \ B.但有什么技巧可以进一步加快这个速度吗?
我有一堆B矩阵,其中只有一个对角元素非零,非对角元素为零。我无法存储$ A ^ { - 1} $。有什么方法可以加快速度吗?
答案 0 :(得分:0)
如果否则零矩阵$ B $的$(i,i)^ {th} $元素等于1,并且你通过这个矩阵后乘一些矩阵$ A ^ { - 1} $,你实际上,从$ A ^ { - 1} $中提取$ i ^ {th} $列并将所有其他元素设置为零。由于你需要$ A ^ { - 1} $的完整$ i ^ {th} $列,你仍然需要反转$ A $,但你不需要实际进行后乘法;只需创建一个零矩阵,并将$ i ^ {th} $列替换为$ A ^ { - 1} $。
答案 1 :(得分:-1)
您的问题可以非常简化。鉴于我们希望将解决方案存储在新矩阵(C
说)和
a)A
是一个NxN矩阵
b)你知道B
只有主对角线上有元素(本身就是NxN矩阵)
c)您想要A*B
C = zeros(size(A));
new_B = diag(B)';
[A_rows, A_cols] = size(A);
for i=1:A_rows
C(i,:) = A(i,:).*new_B;
end