c++ 中的细 QR 分解
是否有一个易于使用的 C++ 库用于矩形矩阵的“薄”QR 分解?
Eigen 似乎只支持完整的 Q 矩阵。我可以采用完整的 Q 并丢弃一些列,但是一开始就不计算它们会更有效吗?
Is there an easy to use c++ library for "thin" QR decomposition of a rectangular matrix?
Eigen seems to only support full Q matrices. I can take a full Q and discard some columns, but would it be more efficient to not compute them to begin with?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Newmat 正是您想要的。
要将 A 分解为 QR,您可以这样做:
如果 A 是 3x5 矩阵,则 R 将是 3x3,Q 也将是 3x5。
Newmat does exactly what you want.
To decompose A into QR, you can do:
If A is a 3x5 matrix, R will be 3x3 and Q will be 3x5 as well.
尽管这个问题有点老了,但郑重声明:Eigen 没有显式计算 Q 矩阵,而是计算 Householder 向量的序列,它可以直接与任何矩阵(具有正确的行数)相乘。
如果您确实明确想要薄 Q 矩阵,只需乘以所需大小的单位矩阵即可:
Even though this question is a bit old, for the record: Eigen does not explicitly compute the Q matrix, but a sequence of Householder vectors, which can directly be multiplied with any matrix (with the correct number of rows).
If you actually explicitly want the thin Q matrix, just multiply by an identity-matrix of the desired size: