如何使用块改变矩阵Xd中的本征值?

问题描述 投票:0回答:1

在我的代码中,我使用了一个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
c++ eigen
1个回答
0
投票

如果 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;  
© www.soinside.com 2019 - 2024. All rights reserved.