【问题标题】:Fast way in Matlab to compute inverse of big matrix 10800x10800?Matlab中计算大矩阵10800x10800逆的快速方法?
【发布时间】:2013-04-25 20:42:46
【问题描述】:

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

inv(A)

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

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

谢谢

【问题讨论】:

  • 通常可以避免使用显式的inv(),但我们需要查看更多代码才能理解这一点。
  • 每次迭代有什么变化?各种事物都有逆矩阵的增量公式。这实际上取决于您在每次迭代中所做的特定操作
  • 我已经编辑了我的原始帖子并提供了更多信息。
  • 如果你的矩阵是对角的,那么它是非常稀疏的!
  • 是的,很抱歉,我在想其他的东西。顺便说一句,3lectrologos 在下面回答了我的问题。

标签: matlab linear-algebra matrix-inverse


【解决方案1】:

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

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

应该很快。

【讨论】:

    【解决方案2】:

    反斜杠运算符\ 据说是faster,也可以更准确。如果没有 MATLAB,我真的无法判断,但您可以尝试运行 A \ eye(10800) 而不是 inv(A),看看是否可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多