我有尺寸10800x10800的在Matlab基质和我计算其逆 直接与功能:在Matlab中快速的方法来计算大矩阵的倒数10800x10800?
inv(A)
它需要3至4分钟仅一个这样的计算。这是迭代算法的一部分,需要超过20次迭代,所以总的来说, 会很慢。有一个更好的方法吗?也许一些数学公式 或者更好的Matlab函数?
编辑:矩阵是对角线。每次迭代时,根据拟合因子分析器的公式更新对角元素 。但这并不重要,重要的是它是一个对角矩阵,它会改变每次迭代。
感谢
我有尺寸10800x10800的在Matlab基质和我计算其逆 直接与功能:在Matlab中快速的方法来计算大矩阵的倒数10800x10800?
inv(A)
它需要3至4分钟仅一个这样的计算。这是迭代算法的一部分,需要超过20次迭代,所以总的来说, 会很慢。有一个更好的方法吗?也许一些数学公式 或者更好的Matlab函数?
编辑:矩阵是对角线。每次迭代时,根据拟合因子分析器的公式更新对角元素 。但这并不重要,重要的是它是一个对角矩阵,它会改变每次迭代。
感谢
如果你的矩阵的确是对角,可以很明显的只是做
Ainv = diag(1./diag(A));
这应该是非常快的。
非常感谢你! – user2225930 2013-04-25 21:39:11
反斜杠操作\
据说是faster,也可以更准确。没有MATLAB我真的不知道,但你可以尝试运行A \ eye(10800)
而不是inv(A)
,看看它是否可行。
通常,避免使用显式的'inv()',但是我们需要看到更多的代码来理解它。 – Oleg 2013-04-25 20:46:21
每次迭代会发生什么变化?有各种各样的东西的逆矩阵的增量公式。这真的取决于你在每次迭代中做的特定操作。 – Shai 2013-04-25 20:57:13
我编辑了我的原始文章并提供了更多信息。 – user2225930 2013-04-25 21:02:10