玩命加载中 . . .

Eigen_1


变量类型

(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;
}

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录