Matlab 加速某些矩阵算术运算

Matlab 加速某些矩阵算术运算,matlab,linear-algebra,matrix-inverse,Matlab,Linear Algebra,Matrix Inverse,我有两个矩阵A和B B只是一个只有一个对角元素非零的矩阵。所有非对角元素也都是零。我必须计算$A^{-1}B$。我的$A^{-1}B$矩阵是稀疏的。在matlab中,我可以做A\B。但是有什么技巧可以进一步加快速度吗 我有一组B矩阵,其中只有一个对角元素是非零的,而非对角元素是零的。我无法存储$A^{-1}$。有什么办法可以加快速度吗?你的问题可以大大简化。假设我们希望将解决方案存储在一个新矩阵中(Csay),并且 a) a是一个NxN矩阵 b) 您知道b只有主对角线包含元素(其本身是一个NxN

我有两个矩阵A和B

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


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

你的问题可以大大简化。假设我们希望将解决方案存储在一个新矩阵中(
C
say),并且

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

如果原本为零的矩阵$B$的$(i,i)^{th}$元素等于1,并且将某个矩阵$A^{-1}$与该矩阵相乘,实际上就是从$A^{-1}$中提取$i^{th}$列,并将所有其他元素设置为零。由于您需要$A^{-1}$的完整$i^{th}$列,因此仍然需要反转$A$,但不需要实际执行后期乘法;只需创建一个零矩阵,并将$i^{th}$列替换为$a^{-1}$。

我必须对您的答案投反对票。似乎您正在计算A*B。OP要求计算A^-1*B@LuisMendo我的错。通读之后,提出一个棘手的问题。我似乎无法打败MATLABs内置的A\b。如果只找到某个sizeLet的一个解决方案,n是a和B的行数或列数,那么仍然很有趣。在最坏的情况下,a^-1有n^2个非零条目。对于每个B,A^-1*B有n个非零条目。您的意思是可以存储所有A^-1*B结果,但不能存储A^-1吗?你有多少个B矩阵?在你的问题中,n的典型值是什么?你考虑过spinv(稀疏矩阵反转)吗?