前言:
这段时间总算是把开题答辩的事情搞完了,心情总算是放松了一点,今天先总结总结这几天一直在使用的矩阵处理库。相信大家在做Matlab项目的时候,如果想移植为C++总是犯头疼,没有一个好的线性代数库可以使用,有些别人自己写的矩阵库却又不支持复数,或者是缺少算点积,解线性方程组的功能。今天给大家介绍的这个库可以完全解决这些问题,甚至还提供了许多Matlab才有的矩阵处理方式,十分的方便。
安装:
下载地址:
http://eigen.tuxfamily.org/index.php?title=Main_Page#Download
点进去如图
现在最新的版本就是如图右上角的3.2.5版本,下载下来之后
解压,然后把解压包的路径加入工程中就可以编译使用了。我用的是vs2010,加入方式是右击解决方案点击属性:
配置属性 -> C/C++ ->常规 中的附加包含目标,把解压地址贴上就行(解决方案里需要有cpp文件才会有这个选项)
这个是我的地址,C:\Users\yw\Desktop\Eigen\eigen-eigen-bdd17ee3b1b3 如下图
添加成功后就可以使用了。
使用方法:
头文件:
只用包含
#include <Eigen/Eigen>
就包含了Eigen库所有的头文件了,如果不需要全部包含,可以自行查看下载下来的EIgen文件夹下的头文件,里面有所有的包含关系。
定义矩阵/支持的数据类型
int main(int, char *[])
{
<span style="white-space:pre"> </span>Matrix3f m3;
<span style="white-space:pre"> </span>m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
<span style="white-space:pre"> </span>Matrix4f m4 = Matrix4f::Identity();
<span style="white-space:pre"> </span>Vector4i v4(1, 2, 3, 4);
<span style="white-space:pre"> </span>std::cout << "m3\n" << m3 << "\nm4:\n"
<span style="white-space:pre"> </span><< m4 << "\nv4:\n" << v4 << std::endl;
}