c++中的薄QR分解
Thin QR decomposition in c++
是否有一个易于使用的c++库用于矩形矩阵的"thin" QR分解?
Eigen似乎只支持满Q矩阵。我可以取一个完整的Q并丢弃一些列,但如果一开始就不计算它们会更有效率吗?
Newmat完全符合您的要求。
将A分解为QR,可以这样做:
Matrix Q = A;
UpperTriangularMatrix R;
QRZ(Q, R)
如果A是3x5矩阵,则R是3x3, Q也是3x5
尽管这个问题有点老了,但要记录:Eigen并没有显式地计算Q矩阵,而是一个Householder向量序列,它可以直接与任何矩阵(具有正确的行数)相乘。
如果你确实明确地想要薄Q矩阵,只需乘以所需大小的单位矩阵:
#include <Eigen/QR>
#include <iostream>
int main()
{
using namespace Eigen;
MatrixXf A(MatrixXf::Random(5,3));
HouseholderQR<MatrixXf> qr(A);
MatrixXf thinQ = qr.householderQ() * MatrixXf::Identity(5,3);
std::cout << thinQ << 'n';
}
相关文章:
- 通过递归进行因子分解
- 有人能分解一下这个c++模板的语法吗
- C++ 乔列斯基因式分解
- 如何加快本征C++中的LU分解?
- 如何将整数分解为不同的变量?
- 减少本征的 QR 分解
- Xcode 中的加速框架以获得 A 的 QR 分解,但找不到 zgeqrf
- 将无向连接图分解为两个组件
- 在 C++ 中分解数字
- 分解SWIG Python接口 - 容器会产生命名空间冲突
- 对模板参数包操作进行因素分解
- 如何修复 LU 分解?
- 动态矩阵特征分解过程中的误差
- 正在从程序内存中分解x指令
- 在分解的 QR 上应用一个大矩阵
- 对特征QR分解感到困惑
- QR分解的正交化输出略微无关的正交矩阵
- 适用于C++AMP矩阵库的求逆、QR分解
- c++中的薄QR分解
- 基于GSL的QR分解的零空间基