Eigen3:将动态矩阵转换为静态矩阵
Eigen3: Cast Dynamic Matrix to Static Matrix
是否可以将动态矩阵转换为静态矩阵,如果可以,最好的解决方案是什么?
示例:
Eigen::MatrixXd a = Eigen::Matrixxd::Zero(4,4);
至
Eigen::Matrix<double, a.rows(), a.cols()> b = a; //?
干杯!
来自 documentation.
The three mandatory template parameters of Matrix are:
Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>.
RowsAtCompileTime and ColsAtCompileTime are the number of rows and columns of the > matrix as known at compile time
当您使用 Eigen::MatrixXd
,
The RowsAtCompileTime and ColsAtCompileTime template parameters can take the special value Dynamic which indicates that the size is unknown at compile time, so must be handled as a run-time variable
鉴于 a
的大小在编译时未知,您无法获得 a.rows()
的值。
鉴于您在编译时知道 a
的大小,您应该使用 Eigen::Matrix
而不是 Eigen::MatrixXd
。但是,如果您不知道 a.rows()
或 a.cols()
,则必须将 b
声明为 Eigen::MatrixXd
。您不能使用 Eigen::Matrix
是否可以将动态矩阵转换为静态矩阵,如果可以,最好的解决方案是什么? 示例:
Eigen::MatrixXd a = Eigen::Matrixxd::Zero(4,4);
至
Eigen::Matrix<double, a.rows(), a.cols()> b = a; //?
干杯!
来自 documentation.
The three mandatory template parameters of Matrix are: Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>.
RowsAtCompileTime and ColsAtCompileTime are the number of rows and columns of the > matrix as known at compile time
当您使用 Eigen::MatrixXd
,
The RowsAtCompileTime and ColsAtCompileTime template parameters can take the special value Dynamic which indicates that the size is unknown at compile time, so must be handled as a run-time variable
鉴于 a
的大小在编译时未知,您无法获得 a.rows()
的值。
鉴于您在编译时知道 a
的大小,您应该使用 Eigen::Matrix
而不是 Eigen::MatrixXd
。但是,如果您不知道 a.rows()
或 a.cols()
,则必须将 b
声明为 Eigen::MatrixXd
。您不能使用 Eigen::Matrix