在我的代码中,我使用了一个MatrixXd数组,使用了eigen C++。我想改变我的矩阵,如下图所示
#include <eigen3/Eigen/Dense>
int main(){
Eigen::MatrixXd m(3,3);
m << 1,2,3,
4,5,6,
7,8,9;
// fixed-size block expression
m.block<1,2>(0,0) = 99; // Compiler Error
//dynamic-size block expression
m.block(0,0,1,2) = 99; // Compiler Error
std::cout<<m<<endl;
}
预期的输出。
99 99 3
4 5 6
7 8 9
如果 m
是一个Matrix对象,你需要写其中的一个。
m.block<1,2>(0,0).setConstant(99);
m.block<1,2>(0,0).array() = 99;
或者,声明 m
作为 ArrayXXd
对象。
Eigen::ArrayXXd m(3,3);
m << 1,2,3,
4,5,6,
7,8,9;
m.block<1,2>(0,0) = 99;