Eigen常用函数

#include <Eigen/Dense>   
// 基本用法  
// Eigen          // Matlab           // 注释  
x.size()          // length(x)        // 向量的长度  
C.rows()          // size(C,1)        // 矩阵的行数  
C.cols()          // size(C,2)        // 矩阵的列数  
x(i)              // x(i+1)           // 访问向量元素(Matlab的下标从1开始计数)  
C(i,j)            // C(i+1,j+1)       // 访问矩阵元素  
    
A << 1, 2, 3,     // 初始化A,元素也可以是矩阵,先按列堆叠,再按行堆叠。  
     4, 5, 6,       
     7, 8, 9;       
B << A, A, A;     // B 是3个A水平排列  
A.fill(10);       // 将A的所有元素填充为10  
  
// Eigen                                    // Matlab                       注释  
MatrixXd::Identity(rows,cols)               // eye(rows,cols)               //单位矩阵  
C.setIdentity(rows,cols)                    // C = eye(rows,cols)           //单位矩阵  
MatrixXd::Zero(rows,cols)                   // zeros(rows,cols)             //全零矩阵  
C.setZero(rows,cols)                        // C = zeros(rows,cols)         //全零矩阵  
MatrixXd::Ones(rows,cols)                   // ones(rows,cols)              //全一矩阵  
C.setOnes(rows,cols)                        // C = ones(rows,cols)          //全一矩阵  
MatrixXd::Random(rows,cols)                 // rand(rows,cols)*2-1          //MatrixXd::Random 返回范围为(-1, 1)的均匀分布的随机数  
C.setRandom(rows,cols)                      // C = rand(rows,cols)*2-1      //返回范围为(-1, 1)的均匀分布的随机数  
VectorXd::LinSpaced(size,low,high)          // linspace(low,high,size)'     //返回size个等差数列,第一个数为low,最后一个数为high  
v.setLinSpaced(size,low,high)               // v = linspace(low,high,size)' //返回size个等差数列,第一个数为low,最后一个数为high  
VectorXi::LinSpaced(((hi-low)/step)+1,      // low:step:hi                  //以step为步长的等差数列。((hi-low)/step)+1为个数  
                    low,low+step*(size-1))  //  
  
  
// Matrix 切片和块。下面列出的所有表达式都是可读/写的。  
// 使用模板参数更快(如第2个)。注意:Matlab是的下标是从1开始的。  
// Eigen                           // Matlab                        // 注释  
x.head(n)                          // x(1:n)                        //前n个元素  
x.head<n>()                        // x(1:n)                        //前n个元素  
x.tail(n)                          // x(end - n + 1: end)           //倒数n个元素  
x.tail<n>()                        // x(end - n + 1: end)           //倒数n个元素  
x.segment(i, n)                    // x(i+1 : i+n)                  //切片  
x.segment<n>(i)                    // x(i+1 : i+n)                  //切片  
P.block(i, j, rows, cols)          // P(i+1 : i+rows, j+1 : j+cols) //块  
P.block<rows, cols>(i
Eigen库是一个用于线性代数运算的C++模板库,提供了各种矩阵和向量运算的函数。下面是对Eigen库的几个常用函数的简要介绍: 1. 矩阵的创建和初始化:Eigen库提供了多种方法来创建矩阵,如MatrixXd和ArrayXd等,可以通过构造函数或赋值操作来初始化矩阵中的元素。 2. 矩阵运算:Eigen库支持矩阵的加法、减法、乘法和除法等运算,可以使用运算符重载或相应的函数进行计算。例如,可以使用*运算符进行矩阵乘法,使用+运算符进行矩阵加法。 3. 线性方程求解:Eigen库提供了多种求解线性方程的方法,如LU分解、QR分解、SVD分解等。可以使用相应的函数来求解具有不同特性的线性方程组。 4. 特征值和特征向量计算:Eigen库提供了函数来计算矩阵的特征值和特征向量,如eigenvalues()和eigenvectors()。这些函数可以用于求解特征值和特征向量问题。 5. 矩阵的逆和伪逆:Eigen库可以计算矩阵的逆矩阵和伪逆矩阵。逆矩阵可以使用inverse()函数计算,伪逆矩阵可以使用pinv()函数计算。 6. 矩阵的转置和共轭:Eigen库提供了函数来计算矩阵的转置和共轭矩阵,如transpose()和conjugate()。这些函数可以用于矩阵的转置和共轭操作。 总之,Eigen库提供了丰富的函数和模板来进行矩阵和向量的各种操作,可以满足不同的线性代数计算需求。其文档详细介绍了每个函数的用法和参数,并提供了示例代码和说明,方便用户使用和理解。用户可以根据自己的需求阅读文档并选择合适的函数来进行运算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值