加快一些矩阵算术运算

时间:2013-12-25 18:42:45

标签: matlab linear-algebra matrix-inverse

我有两个矩阵A和B.

B只是一个矩阵,只有一个对角线元素不为零。所有非对角元素也都为零。我必须计算$ A ^ { - 1} B $。我的$ A ^ { - 1} B $矩阵很稀疏。在matlab中,我可以做A \ B.但有什么技巧可以进一步加快这个速度吗?

我有一堆B矩阵,其中只有一个对角元素非零,非对角元素为零。我无法存储$ A ^ { - 1} $。有什么方法可以加快速度吗?

2 个答案:

答案 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