C++中Eigen库的使用

本文介绍了C++中的Eigen库,包括环境配置步骤和相关知识,如矩阵定义、静态与动态矩阵以及矩阵元素的访问方法。通过示例代码,展示了如何在项目中使用Eigen库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

可以参考博客:Eigen的简单用法
Eigen介绍及简单使用

一、Eigen库的环境配置

Eigen是一个C++的数值计算库,包含矩阵、矢量、数值求解以及相关的算法。在下载页面,选择latest release candidate版本中的zip格式进行下载。

  1. 先下载好Eigen的安装包
  2. 配置环境

Eigen的安装包的位置:E:\C++\eigen-3.3.8在这里插入图片描述
在VS中创建一个新项目
在这里插入图片描述
对标红部分点右键
在这里插入图片描述
点击属性
在这里插入图片描述

在包含目录下添加Eigin库的文件地址:E:\C++\eigen-3.3.8在这里插入图片描述

Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用了。

二、相关知识介绍

矩阵的定义: Eigen中关于矩阵类的模板函数中,共有六个模板参数,常用的只有前三个。其前三个参数分别表示矩阵元素的类型、行数和列数。

 template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
 struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
.......

2.1 Eigen 矩阵定义

#include <iostream>
#include <Eigen/core>
#include <Eigen/Dense>

using namespace Eigen;
using namespace std;

int main()
{
   
   
    MatrixXd m = MatrixXd::Random(3, 3);        //初始化3X3的随机动态矩阵
    cout << "Random Matrix:" << endl << m << endl;
    m = MatrixXd::Constant(3, 3, 1.2);          //3X3的矩阵,每个值都是1.2
    cout << "Constant Matrix:" << endl << m << endl;
    VectorXd v(3);          //创建矩阵v
    v << 1, 2, 3;           //设置v的值
    cout << "Vector:" << v << endl;
    RowVectorXd h(3);       //设置行矩阵
    h << 4, 5, 6;
    cout << "RoeVector:" << h << endl;
    Matrix<double, 3, 3> A;               // 静态矩阵
    Matrix<double, 3, Dynamic> B;         // 行固定,列不固定
    Matrix<double, Dynamic, Dynamic> C;   // 行列都不固定,等同与动态矩阵
    Matrix<double, 3, 3, RowMajor> E;     // 行主要;默认是列为主   Row major; default is column-major.
    Matrix3f P, Q, R;                     // 3x3 float matrix.
    Vector3f x, y, z;                     // 3x1 float matrix.
    RowVector3f a, b, c;                  // 1x3 float matrix.
    VectorXd v1;                           // 双精度的动态列向量(Dynamic column vector of doubles)
    //Eigen与matlab对应的关系
    //// Eigen           // Matlab           // comments
    //x.size();          // length(x)        // 向量长度
    //C.rows();          // size(C,1)        // 行数
    //C.cols();          // size(C,2)        // 列数
    //x(i);              // x(i+1)           // Matlab is 1-based
    //C(i, j);           // C(i+1,j+1)       //

}

在这里插入图片描述

#include <iostream>
#include <Eigen\Dense>
using Eigen::MatrixXd;
using namespace std;
using namespace Eigen;
int main()
{
   
   
	///动态矩阵初始化
	MatrixXd m(2, 2);//MatrixXd 代表 这个矩阵是double类型, X代表具体的行数都动态编译的
	m(0, 0) = 3;
	m(1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值