【问题标题】:Compute matrix inverse using biogo?使用 biogo 计算矩阵逆?
【发布时间】:2013-12-12 17:58:04
【问题描述】:

我正在研究 Go 中的卡尔曼滤波器实现。看完this线程后,我决定使用biogo进行矩阵运算。但是,从the documentation 看来,biogo 没有提供计算矩阵逆的函数。

有没有人知道或知道使用 biogo 提供的函数计算逆的简单方法?谢谢!

【问题讨论】:

  • 你的实现是开源的吗?我也在考虑在 go 中启动这样的 KF 库。谢谢。

标签: matrix go matrix-inverse kalman-filter


【解决方案1】:

如果您愿意切换到github.com/gonum/matrix 包,那么它提供了一个您可以使用的Inverse 函数。这两个包的界面看起来很相似。

gonum-dev 邮件列表上的帖子来看,gonum/matrix 似乎是前进的方向(并将最终取代 biogo.matrix)。

【讨论】:

  • Gonum/matrix 主要由同时编写 biogo 的 Dan Kortschak 编写,事实上,我很确定 gonum/matrix 或多或少是 biogo.matrix 的一个分支。你说得对,结局是由 gonum/matrix 替换它。
  • 当我在 biogo 邮件列表上问他时,Dan 建议使用 gonum/matrix。谢谢!
【解决方案2】:

你应该检查一下你是否真的需要逆矩阵,或者你用它做的一切是否都是为了解决一些线性系统。

例如,如果您的公式是 x=AB^(-1)Cy,那么您将其分解为步骤 w=Cy、z=solve(B,w)、x=Az,完全避免逆矩阵。因此,如果您的应用程序是向量输入 - 向量输出,则可能不需要逆向。

【讨论】:

  • 这有助于使用 gonum 实现伪逆。线性回归解 w = (X'X)^(-1) X'y 可以使用 gonum as w.Solve(X'X, X'y) 来实现。其中 X' 是 X 转置。
  • 由于您有可用的 Lapack 函数,计算 $X$ 的 QR 分解然后求解 Rw=Q'y, w=solve(R, Q'y) 在数值上更稳定R 的缩减维度。纯粹主义者使用 X 的 SVD 来涵盖所有可能的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多