在Matlab中快速计算大矩阵10800x10800的逆?

时间:2013-04-25 20:42:47

标签: matlab linear-algebra matrix-inverse

我在Matlab中有一个大小为10800x10800的矩阵,我计算它的逆 直接用函数:

inv(A)

一次这样的计算需要3到4分钟。这是一个部分 需要超过20次迭代的迭代算法,所以整体情况会如此 很慢。有一个更好的方法吗?也许是一些数学公式 或者更好的Matlab函数?

编辑:矩阵是对角线的。每次迭代都会更新对角线元素 基于拟合因子分析器的公式。但那是无关紧要的 重要的是它是一个对角矩阵,它会改变每次迭代。

感谢

2 个答案:

答案 0 :(得分:4)

如果你的矩阵确实是对角线,你显然可以做到

Ainv = diag(1./diag(A));

应该非常快。

答案 1 :(得分:1)

反斜杠运算符\被称为faster,也可能更准确。没有MATLAB我真的不知道,但你可以尝试运行A \ eye(10800)而不是inv(A),看看它是否有用。