C++如何使用Eigen实现矩阵运算

Eigen简介

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

特点:

  • Eigen是多才多艺的。支持各种矩阵尺寸,从固定尺寸矩阵到任意大小的稠密矩阵,乃至系数矩阵;支持所有标准的数字类型等。
  • Eigen运行很快。
  • Eigen是可靠地
  • Eigen是优雅的。API简介而易懂,且遵从C++的规范。
  • Eigen受主流编译器支持。
如何使用(以code::blocks为例)
  • 1.下载和解压
    官网选择合适的版本下载后,直接解压到任意目录。
  • 2.在IDE中配置
    Eigen不需要进行任何安装,只需要告诉编译器去哪里寻找头文件。以code::blocks为例,【Settings】→【Compiler】→【Global Compiler Settings】→【Search Directory】→【Compiler】下添加Eigen解压后的目录即可。如下图所示:
    Eigen
  • 3.使用Eigen
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
  MatrixXd m(2,2);
  m << 1,2,3,4;
  cout << m << endl;
}

运行结果:
result

常用操作
  • 声明矩阵、向量
MatrixXd mat(m,n);//声明一个m×n的矩阵
VectorXd vec(n);  //声明一个n维的向量
  • 随机访问
val_i_j = mat(i,j);
val_i = vec(i);
  • 向量点积、叉积
vec1.dot(vec2);
vec1.cross(vec2);
  • 向量切片(tile)
vec.middleRows(startRow,n)//返回的是vec[startRow, startRow+n). startRow是起始下标,n为元素的个数
  • 矩阵切片(tile)
mat.middleRows(m,n)//相当于matlab中的mat(m:n,:)
mat.middleCols(m,n)//相当于matlab中的mat(:,m:n)
mat.middleRows(m,n).middleCols(p,q)//相当于matlab中的mat(m:n,p:q)
参考链接

官方网站
C++矩阵库Eigen(一):初识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值