如何使用块更改 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;
在我的代码中,我使用了使用特征 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;