C++ 特征3:将动态矩阵转换为静态矩阵

C++ 特征3:将动态矩阵转换为静态矩阵,c++,eigen,eigen3,C++,Eigen,Eigen3,可以将动态矩阵转换为静态矩阵吗?如果可以,最佳解决方案是什么? 例如: 到 本征矩阵b=a;/? 干杯 来自 矩阵的三个强制性模板参数为: 矩阵 RowsAtCompileTime和ColsAtCompileTime是编译时已知的>矩阵的行数和列数 使用Eigen::MatrixXd时 RowsAtCompileTime和ColsAtCompileTime模板参数可以采用特殊的动态值,这表明大小在编译时是未知的,因此必须作为运行时变量处理 由于编译时a的大小未知,因此无法获取a.rows()的

可以将动态矩阵转换为静态矩阵吗?如果可以,最佳解决方案是什么? 例如:

本征矩阵b=a;/? 干杯

来自

矩阵的三个强制性模板参数为: 矩阵

RowsAtCompileTime和ColsAtCompileTime是编译时已知的>矩阵的行数和列数

使用
Eigen::MatrixXd

RowsAtCompileTime和ColsAtCompileTime模板参数可以采用特殊的动态值,这表明大小在编译时是未知的,因此必须作为运行时变量处理

由于编译时
a
的大小未知,因此无法获取
a.rows()的值


假设您在编译时知道
a
的大小,那么应该使用
eigent::Matrix
而不是
eigent::MatrixXd
。但是,如果您不知道
a.rows()
a.cols()
,则必须将
b
声明为
Eigen::MatrixXd
。您不能使用
Eigen::Matrix

您得到了什么?它编译吗?它在运行时出错吗?但我对此表示怀疑,模板参数必须在编译时知道,这里的情况似乎不太可能是这样。由于b的非静态初始化,我得到了一个编译错误。我不能用a.rows()定义矩阵,因为它不在编译时。我搜索一个变通方法。
Eigen::MatrixXd a = Eigen::Matrixxd::Zero(4,4);
Eigen::Matrix<double, a.rows(), a.cols()> b = a; //?