将行主数组映射到列主本征矩阵

我想从C型数组映射到列专业本征矩阵.

映射本身使用RowMajor类型,

所以我尝试了

std::vector<double> a(9);
double *p= a.data();
Eigen::MatrixXd M=Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::RowMajor>>(p)

我得到了我所期望的(M.data()的顺序),但是,如果在编译时不知道模板中的Dimension(3),则此方法不起作用…任何解决方案?

最佳答案
我假设你写了:

Eigen::MatrixXd M=Eigen::Map<Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>(p);

这不会让地图知道尺寸.您必须在构造函数中添加它:

std::vector<double> a{1,2,3,4,5,6,7,8,9};
double *p = a.data();
std::cout << Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::RowMajor>>(p) << "\n\n";
std::cout << Eigen::Map<Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>(p, 3, 3) << "\n\n";

std::cout << Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::ColMajor>>(p) << "\n\n";
std::cout << Eigen::Map<Eigen::MatrixXd>(p, 3, 3) << "\n\n";

转载注明原文:将行主数组映射到列主本征矩阵 - 代码日志