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

503 阅读1分钟

「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战」。

Eigen简介

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

特点:

如何使用(以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(一):初识