C++:Eigen库
了解C++的Eigen库,主要内容来自:https://blog.csdn.net/hongge_smile/article/details/107296658
,并加入自己的笔记。
介绍
Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms
Eigen是一个有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法的C ++开源库。
eigen官网链接:http://eigen.tuxfamily.org/index.php?title=Main_Page
文档:http://eigen.tuxfamily.org/dox/
安装
环境:MacOS+Clion
下载:http://eigen.tuxfamily.org/index.php?title=Main_Page

使用分两种情况:1、直接用;2、打包好再用
直接使用
在CMakeLists文件中加上:
include_directories(解压地址)
编译安装后使用
#编译
cd eigen-3.3.9
mkdir build
cd build
cmake ..
#安装
make install
头文件在:/usr/local/include/eigen3
静态库:/usr/local/lib/engines-3
在CMakeLists文件中加上:
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
最后附上Windows上安装:https://blog.csdn.net/huangjunsheng123/article/details/112380581
简单使用
库中头文件和文件中的类介绍:

一般为了省事,可以直接导入#include <Eigen/Dense> 或者#include <Eigen/Eigen>
矩阵生成
//矩阵定义和初始化
MatrixXd m(2,2); // MatrixXd 表示的是动态数组,初始化的时候指定数组的行数和列数
m(0,0) = 3; //m(i,j) 表示第i行第j列的值,这里对数组进行初始化
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
cout <<"m=\n"<<m <<endl; // eigen重载了<<运算符,可以直接输出eigen矩阵的值
Matrix2d c;
c << 1, 2,
3, 4;
cout <<"c=\n"<<c << endl;
MatrixXd d = MatrixXd::Random(3, 3); //初始化动态矩阵m,使用Random函数,初始化的值在[-1,1]区间内,矩阵大小3X3
d = (d + MatrixXd::Constant(3, 3, 1.2)) * 50; // MatrixXd::Constant(3, 3, 1.2)初始化3X3矩阵,矩阵里面的数值为常量,全部为1.2
// Eigen重载了+ 运算符,两个矩阵有相同的行数和列数即可相加,对应位置上的值相加
cout << "d =" << endl << d << endl;
矩阵运算
//矩阵操作
cout<<"转置\n"<<c.transpose()<<endl;
cout<<"伴随\n"<<c.adjoint()<<endl;
cout << "行列式: " << c.determinant() <<endl;
cout << "逆矩阵\n" << c.inverse() <<endl;
cout << "相加:\n"<<m+c<<endl;
VectorXd v(3);
v << 1, 2, 3; //逗号初始化,英文:comma-initializer,Eigen未提供c++11 的{}初始化方式
cout << "矩阵*向量 =\n"<< d * v << endl;
参考
1、Eigen库的学习(一)
2、https://www.cnblogs.com/cc111/p/9354924.html
3、https://www.cnblogs.com/jerry323/p/9097264.html
4、https://blog.csdn.net/jiajiading/article/details/103369058
C++:Eigen库的更多相关文章
- 关于Eigen库在Visual Studio2013中传参对齐报错问题
Error as follow: 具体问题及解决办法描述如下: (引自http://www.fx114.net/qa-278-97757.aspx) /************************ ...
- NDK 开发实例二(添加 Eigen库)
上一篇,我已经阐述了如何创建一个简单的NDK实例: NDK 开发实例一(Android.mk环境配置下) 在上一篇的基础上,我们来添加Eigen库,然后做一个简单实例. Eigen是一个高层次的C + ...
- Eigen库和STL容器冲突问题
博客参考:https://blog.csdn.net/huajun998/article/details/54311561 在程序中想使用类似于如下的容器 std::vector<Eigne:: ...
- Eigen库矩阵运算使用方法
Eigen库矩阵运算使用方法 Eigen这个类库,存的东西好多的,来看一下主要的几个头文件吧: ——Core 有关矩阵和数组的类,有基本的线性代数(包含 三角形 和 自伴乘积 相关),还有相应对数组的 ...
- SVD分解的c++代码(Eigen 库)
使用Eigen 库:进行svd分解,形如 A = U * S * VT. JacobiSVD<MatrixXd> svd(J, ComputeThinU | ComputeThinV); ...
- C++ 矩阵计算库 :Eigen库
Eigen http://eigen.tuxfamily.org/index.php?title=Main_Page 下载http://bitbucket.org/eigen/eigen/get/3. ...
- Eigen库笔记整理(一)
首先熟悉Eigen库的用途,自行百度. 引入头文件: // Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include < ...
- Eigen库对齐问题:declspec(align('16')) 的形参将不被对齐
一:错误提示:error C2719: '_Val': formal parameter with __declspec(align('16')) won't be aligned 英文提示:erro ...
- 如何安装Eigen库和Sophus库
* { font-family: "Tibetan Machine Uni", "sans-serif", STFangSong; outline: none ...
- Windows 从头搭建c++ Eigen 库
虽然目前还在用python实现自己的算法,但是还是有点略微不满足,算法迟早有一天全从python搬到c++上,先给自己立个flag. 前言 由于本人做一些模型的搭建和计算,矩阵运算必然是少不了的,本人 ...
随机推荐
- PostgreSQL中将对象oid和对象名相互转换
PostgreSQL中将对象oid转为对象名 使用pg的内部数据类型将对象oid转为对象名,可以简化一些系统视图的关联查询. 数据库类型转换对应类型的oid 可以用以下数据库类型转换对应类型的oid( ...
- 简单但实用,RTC时钟使用指南
合宙Air201快速入门-RTC实时时钟使用示例- 本教程教你通过使用脚本代码,实现Air201内置RTC实时时钟同步时间.获取时间.设置时间等功能,可根据实际需求灵活应用. 我们先了解一些相关基础知 ...
- JVM调优总结:典型配置举例
原文出处:http://developer.51cto.com/art/201201/311739.htm 一篇非常棒的关于JVM性能调优的文章,转载用于自己经常查阅 以下配置主要针对分代垃圾回收算法 ...
- 【docker-compose】ElasticSearch安装教程
仅供学习参考 ,请勿轻易在生产环境使用 0. 目录树 1. 创建目录 mkdir -p /docker/elasticsearch/conf /docker/elasticsearch/data /d ...
- Vue 模版解析
1.大括号表达式 (1)在MVVM()中接收并保存配置对象 (2)调用Compile编译函数,将el和vm传入 function MVVM (option) { this.$option = opti ...
- Jetpack Compose学习(14)——ConstraintLayout约束布局使用
原文地址: Jetpack Compose学习(14)--ConstraintLayout约束布局使用-Stars-One的杂货小窝 本文阅读之前,需要了解ConstraintLayout的使用! 各 ...
- Excel使用IF{1,0}虚拟数组+VLOOKUP实现联合查询
以此案例举例: 使用IF({1,0})建立虚拟数据的方法,整体输入的公式是: =VLOOKUP(E2&F2,IF({1,0},A:A&B:B,C:C),2,0) 输入完公式之后,需要按 ...
- 逍遥模拟器+Fiddler抓包 (附带软件)
获取软件地址: 链接:https://pan.baidu.com/s/1zE9AECWOZlw_VDVMAnkBhQ?pwd=c0kq 提取码:c0kq 一.逍遥模拟器安装 1. 安装逍遥模拟器: 2 ...
- Envoy 官网,中文指南,Envoy 实现 .NET 架构网关
收集一些 Envoy 的资料 Envoy 实现 .NET 架构的网关系列 Envoy实现.NET架构的网关(一)静态配置与文件动态配置 Envoy实现.NET架构的网关(二)基于控制平面的动态配置 E ...
- 【前端】2024年 前端Base64编码的中文处理问题
window.btoa() 遇到中文要出问题 localStorage.setItem("token",window.btoa(unescape(encodeURIComponen ...