问题描述
是否可以将动态矩阵转换为静态矩阵,如果是,最佳解决方案是什么? 示例:
Eigen::MatrixXd a = Eigen::Matrixxd::Zero(4,4);
到
Eigen::Matrix<double,a.rows(),a.cols()> b = a; //?
干杯!
解决方法
Matrix 的三个必选模板参数是:
矩阵
RowsAtCompileTime 和 ColsAtCompileTime 是编译时已知的 > 矩阵的行数和列数
当您使用 Eigen::MatrixXd
时,
RowsAtCompileTime 和 ColsAtCompileTime 模板参数可以采用特殊值 Dynamic 表示大小在编译时未知,因此必须作为运行时变量处理
鉴于编译时 a
的大小未知,您无法获得 a.rows()
的值。
鉴于您在编译时知道 a
的大小,您应该使用 Eigen::Matrix
而不是 Eigen::MatrixXd
。但是,如果您不知道 a.rows()
或 a.cols()
,则必须将 b
声明为 Eigen::MatrixXd
。您不能使用 Eigen::Matrix