我有两个矩阵A和B。
B 只是一个矩阵,只有一个对角线元素不为零。所有非对角线元素也为零。我必须计算$A^{-1}B$。我的$A^{-1}B$矩阵很稀疏。在 matlab 中,我可以做 A\B。但是有什么技巧可以进一步加快速度吗?
我有一堆 B 矩阵,其中只有一个对角元素不为零,非对角元素为零。我无法存储$A^{-1}$。有什么办法可以加快速度吗?
如果一个原本为零的矩阵 $B$ 的 $(i,i)^{th}$ 元素等于 1,并且您将某个矩阵 $A^{-1}$ 后乘以该矩阵,则实际上是从 $A^{-1}$ 中提取 $i^{th}$ 列并将所有其他元素设置为零。 由于您需要 $A^{-1}$ 的完整 $i^{th}$ 列,因此您仍然需要反转 $A$,但您不需要实际进行乘法后;只需创建一个零矩阵并将 $i^{th}$ 列替换为 $A^{-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