如何使用块更改 matrixXd 特征值中的值?

how to change values in matrixXd eigen using block?

在我的代码中,我使用了使用特征 C++ 的 MatrixXd 数组。我想改变我的矩阵如下所示

#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;