一
#include <Eigen/Dense>
Eigen::Matrix3d mat(2,2);
cout<<mat(0,0)<<endl;
- 塊操作
MatrixXd M = MatrixXd::Zero(50, 50);
cout << M.block(2, 3, 5, 6) << endl; //指的是M矩陣從(2,3)位置開始,下數(shù)5個(gè)元素,右數(shù)6個(gè)元素
M.block(a, b, m ,n)指的是從下標(biāo)(a,b)的元素開始,向下m個(gè)元素亥贸,向右n個(gè)元素。
- 矩陣和C++數(shù)組轉(zhuǎn)換
MatrxXd M = MatrixXd::Zero(50,50);
//矩陣轉(zhuǎn)數(shù)組
double* test = M.data();
//數(shù)組轉(zhuǎn)矩陣
Map<MatrixXd>tM(test, 50, 50);
注意屏镊,這兩種轉(zhuǎn)換方式都是淺拷貝针史,改變源數(shù)據(jù)的值拷貝后對象的值也會(huì)改變。
- 矩陣輸出到文件
Eigen重載了<<赋访,直接輸出到文件即可可都。
MatrixXd M = MatrixXd::Zero(5, 5);
ofstream fout("test.txt");
fout << M;
fout.close();