如何使用块更改矩阵XXD特征值? 在我的代码中,我使用的是EIGEN C++的MatRXXD数组。我想更改我的矩阵,如下所示 #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; }

如何使用块更改矩阵XXD特征值? 在我的代码中,我使用的是EIGEN C++的MatRXXD数组。我想更改我的矩阵,如下所示 #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; },c++,eigen,C++,Eigen,如果m是矩阵对象,则需要编写以下任一项: m.block<1,2>(0,0).setConstant(99); m.block<1,2>(0,0).array() = 99; 如果m是矩阵对象,则需要编写以下任一项: m.block<1,2>(0,0).setConstant(99); m.block<1,2>(0,0).array() = 99; 您是否尝试过:m.block(0,0)=99。(运算符期望的是双精度而不是整数)。是的,

如果
m
是矩阵对象,则需要编写以下任一项:

 m.block<1,2>(0,0).setConstant(99);
 m.block<1,2>(0,0).array() = 99;

如果
m
是矩阵对象,则需要编写以下任一项:

 m.block<1,2>(0,0).setConstant(99);
 m.block<1,2>(0,0).array() = 99;

您是否尝试过:
m.block(0,0)=99。
(运算符期望的是双精度而不是整数)。是的,我尝试过m.block(0,0)=99。给出了相同的错误。是否尝试:
m.block(0,0)=99。
(运算符应为双精度而不是整数)。是的,我尝试了m.block(0,0)=99。给出了相同的错误。如果将矩阵声明为动态大小块表达式m.block(0,0,1,2)=99;//编译器错误仅当
m
数组时,直接将标量分配给
m
块(或
m
本身)才有效。否则,使用我在开始时建议的一种替代方法有没有其他方法可以改变使用特征矩阵的动态大小块表达式?我不理解你的问题。我给出的备选方案也适用于动态矩阵块表达式:如果矩阵声明为动态大小块表达式m.block(0,0,1,2)=99;//编译器错误仅当
m
数组时,直接将标量分配给
m
块(或
m
本身)才有效。否则,使用我在开始时建议的一种替代方法有没有其他方法可以改变使用特征矩阵的动态大小块表达式?我不理解你的问题。我给出的备选方案也适用于动态矩阵块表达式:
Eigen::ArrayXXd m(3,3);
m << 1,2,3,
     4,5,6,
     7,8,9;
m.block<1,2>(0,0) = 99;