变量类型
(1) 矩阵类型
MatrixSizeType where Size can be 2,3,4 for fixed size square matrices or X for dynamic size, and where Type can be i for integer, f for float, d for double, cf for complex float, cd for complex double.
Matrix3d
: double 3X3 方阵MatrixXf
: float 动态大小
(2) 向量类型
VectorSizeType: 列向量
RowVectorSizeType: 行向量Vector4f
: float 4行的列向量
零矩阵
MatrixXd::Zero(rows,cols)
随机矩阵
MatrixXd::Random(rows,cols)
常数矩阵
MatrixXd::Constant(rows,cols,constant)
单位矩阵
MatrixXd::Identity(rows,cols)
代码示例
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main() {
Eigen::MatrixXd q = Eigen::MatrixXd::Zero(2,2);
cout << q << endl;
# 0 0
# 0 0
q.resize(4,4); // 仅限于0矩阵,其他会出大问题
cout << q.rows() << endl; // 4
cout << q.cols() << endl; // 4
cout << q << endl;
# 0 0 0 0
# 0 0 0 0
# 0 0 0 0
# 0 0 0 0
MatrixXd m2 = MatrixXd::Random(3, 3);
cout << m2 << endl;
# 0.680375 0.59688 -0.329554
# -0.211234 0.823295 0.536459
# 0.566198 -0.604897 -0.444451
MatrixXd m3 = MatrixXd::Constant(3, 3, 1.2);
cout << m3 << endl;
# 1.2 1.2 1.2
# 1.2 1.2 1.2
# 1.2 1.2 1.2
VectorXd v(2);
v << 1, 2;
cout << v << endl;
# 1
# 2
cout << m*v << endl; // 矩阵和向量相乘
# 5
# 11
MatrixXd m4 = MatrixXd::Identity(3, 4);
// 1 0 0 0
// 0 1 0 0
// 0 0 1 0
return 0;
}