Egien介绍

Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。它的License是MPL2。它支持多平台。

Eigen采用源码的方式提供给用户使用,在使用时只需要包含Eigen的头文件即可进行使用。之所以采用这种方式,是因为Eigen采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供用户使用。

下载Egien

地址:http://eigen.tuxfamily.org/index.php?title=Main_Page#Download

下载

然后解压放在自己想放的位置就好嘞

配置Visual Studio 2019

新建个项目,或者打开自己想引入Eigen的项目

在解决方案资源管理器右键解决方案,打开设置

设置

在C/C++的附加包含目录中加入解压完成的eigin库路径,这里我放在C盘的src文件夹中,根据自己的路径改就成。

b128a775875822b2908fa1b1af48501

然后就可以用嘞!

测试

Eigen头文件

不管那么多include一个Dense,试试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<Eigen/Dense>
#include<cmath>

int main()
{
//向量:定义、输出、加减、数乘、点积
Eigen::Vector3f x(1.0f, 0.0f, 0.0f);
Eigen::Vector3f v(1.0f, 2.0f, 3.0f);
std::cout << "输出:v" << std::endl;
std::cout << v << std::endl;
std::cout << "输出:v+x" << std::endl;
std::cout << v + x << std::endl;
std::cout << "输出:2v" << std::endl;
std::cout << 2.0f * v << std::endl;
std::cout << "输出:v点乘x" << std::endl;
std::cout << v.dot(x) << std::endl;

//矩阵:定义、输出、加减、数乘、矩阵相乘、矩阵乘向量
Eigen::Matrix3f i, j;
i << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0;
j << 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0;
std::cout << "输出:i" << std::endl;
std::cout << i << std::endl;
std::cout << "输出:i+j" << std::endl;
std::cout << i + j << std::endl;
std::cout << "输出:2i" << std::endl;
std::cout << 2 * i << std::endl;
std::cout << "输出:i*j" << std::endl;
std::cout << i * j << std::endl;
std::cout << "输出:i*v" << std::endl;
std::cout << i * v << std::endl;
return 0;
}

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
输出:v
1
2
3
输出:v+x
2
2
3
输出:2v
2
4
6
输出:v点乘x
1
输出:i
1 2 3
4 5 6
7 8 9
输出:i+j
2 2 3
4 6 6
7 8 10
输出:2i
2 4 6
8 10 12
14 16 18
输出:i*j
1 2 3
4 5 6
7 8 9
输出:i*v
14
32
50

其他的就请详细阅读官方文档罢。