在我自己的QR分解的C ++实现中,通过Givens旋转将旋转矩阵设置为单位矩阵,我试图使用this更通用的Eigen类用于稀疏矩阵。实际上,常见的压缩行/列存储格式不支持算法要求的'setIdentity'方法。
我添加到我的代码中的代码段无法编译,在这方面,Eigen的帮助对我来说是很晦涩的:
#include <Eigen/Sparse>
SparseMatrix<double,ColMajor,int> G(m,m);
G = G.setIdentity(m,m);
有什么建议吗?如何定义预处理器符号EIGEN_SPARSEMATRIX_PLUGIN
?
[BTW:那里有预先打包好的实现吗? Eigen和Armadillo都没有提供]]
#include <iostream>
#include <Eigen/Sparse>
int main() {
constexpr int m = 10;
Eigen::SparseMatrix<double,Eigen::ColMajor,int> G(m,m);
G.setIdentity();
std::cout << G << std::endl;
return 0;
}
我建于
g++ -Wall -std=c++11 foo.cpp -o foo
您可能需要添加-I /usr/local/include/Eigen/
以确保找到您的Eigen标头。