Eigen使用记录

  • Core #include<Eigen/Core>,包含Matrix和Array类,基础的线性代数运算和数组操作。

定义矩阵

typedef Eigen::Matrix<float,2,2> Base; 定义一个两行两列的矩阵类型。后续要使用的话,可以使用 Base A,B,C;来实例化。

也可以直接定义一个矩阵

Eigen::Matrix<float,2,2> A;

还可以将矩阵定义为动态矩阵,矩阵大小在定义的时候不用确定。

Eigen::Matrix<float,Dynamic,Dynamic> B;

 

矩阵赋值

直接一个一个赋值。

A<<0,0,0,0;

全部元素赋为一个值0。

A.fill(0);

获取矩阵的某个位置的元素,将其赋值为1。

A(0,0)=1;

可以使用循环来初始化矩阵。

 

获取矩阵的转置

A.transpose();

 

获取矩阵的行数和列数

A.rows();   A.cols();

获取第i行和第i列

A.row(i);   A.col(i);

获取矩阵的最小值和最大值

A.minCoeff(); A.maxCoeff();

获取某一行的最小值

A.row(i).minCoeff();

 

  • Eigenvalues #include<Eigen/Eigenvalues>,包含特征值,特征向量分解。

使用Eigen来进行矩阵分解

Matrix3d A;

A << 1, 2, 3, 4, 5, 6, 7, 8, 9;

EigenSolver<Matrix3d> eigensolver(A);

Matrix3d D = eigensolver.pseudoEigenvalueMatrix();获取矩阵A的特征值矩阵,是一个特征值组成对角阵,除了对角线其余都是0

Matrix3d V = eigensolver.pseudoEigenvectors();获取特征向量的矩阵

 

  • SVD #include<Eigen/SVD>,包含SVD分解。

Eigen::JacobiSVD<Eigen::Matrix3d> svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV);对A进行矩阵分解,并且计算U和V

svd.matrixV();获取右奇异值

svd.matrixU();获取左奇异值

svd.singularValues();获取特征值

 

---------------------------------------------------------------------------

参考:https://www.jianshu.com/p/931dff3b1b21

          https://blog.csdn.net/piaoxuezhong/article/details/79110421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值