参考:https://www.cnblogs.com/rainbow70626/p/8819119.html
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
MatrixXf a(4, 1);
a = MatrixXf::Zero(4, 1);//初始化为0
cout << "初始化为0" << endl << a << endl;
a = MatrixXf::Ones(4, 1);//初始化为1,矩阵大小与初始化相关,因为是动态矩阵
cout << "初始化为1" << endl << a << endl;
a.setZero();//矩阵置零
cout << "矩阵置零" << endl << a << endl;
a << 1, 2, 3, 4;//手动赋值
MatrixXf b(1, 4);
b.setRandom();//随机生成一个矩阵
MatrixXf c(3, 3);
c.setIdentity();
cout << "置单位矩阵:" << endl << c << endl;
c.setRandom();
cout << "置随机矩阵:" << endl << c << endl;
MatrixXf d = c;
d = d.inverse();
cout << "置矩阵的逆:" << endl << d << endl;
cout << "矩阵a:" << endl << a << endl;
cout << "矩阵b:" << b << endl;
cout << "矩阵c:" << endl << c << endl;
cout << "访问a(0):" << endl << a(0) << endl;
cout << "矩阵相乘:" << endl << a * b << endl;
cout << "矩阵数乘:" << endl << 2 * a << endl;
cout << "矩阵c求逆d:" << endl << d << endl;
cout << "逆矩阵回乘:" << endl << d * c << endl;
cout << "逆矩阵d转置:" << endl << d.transpose() << endl;
Vector3d v(1, 2, 3);
Vector3d w(1, 0, 0);
cout << "向量相加:" << endl << v + w << endl;
return 0;
}
输出:
初始化为0
0
0
0
0
初始化为1
1
1
1
1
矩阵置零
0
0
0
0
置单位矩阵:
1 0 0
0 1 0
0 0 1
置随机矩阵:
0.170019 0.791925 -0.651784
-0.0402539 0.64568 0.717887
-0.299417 0.49321 0.421003
置矩阵的逆:
0.289714 2.30709 -3.48548
0.697552 0.435359 0.337562
-0.611145 1.13077 -0.49905
矩阵a:
1
2
3
4
矩阵b:-0.997497 0.127171 -0.613392 0.617481
矩阵c:
0.170019 0.791925 -0.651784
-0.0402539 0.64568 0.717887
-0.299417 0.49321 0.421003
访问a(0):
1
矩阵相乘:
-0.997497 0.127171 -0.613392 0.617481
-1.99499 0.254341 -1.22678 1.23496
-2.99249 0.381512 -1.84017 1.85244
-3.98999 0.508683 -2.45357 2.46992
矩阵数乘:
2
4
6
8
矩阵c求逆d:
0.289714 2.30709 -3.48548
0.697552 0.435359 0.337562
-0.611145 1.13077 -0.49905
逆矩阵回乘:
1 0 0
7.45058e-09 1 -4.47035e-08
0 -4.47035e-08 1
逆矩阵d转置:
0.289714 0.697552 -0.611145
2.30709 0.435359 1.13077
-3.48548 0.337562 -0.49905
向量相加:
2
2
3
网友评论