安装Eigen
- 无需安装。
- 只需将Eigen位置添加到include路径中。
Demo 1
- MatrixXd,X表示动态大小,d表示双精度。
- Eigen/Dense定义了MatrixXd类型的所有成员函数等。该头文件定义的类和函数都位于Eigen名字空间中。
- *
#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
MatrixXd m(2,2);
m(0,0) = 3;
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
std::cout << m << std::endl;
}
编译
g++ -I /path/to/eigen/ my_program.cpp -o my_program
- 将Eigen文件夹放到/usr/local/include/目录下,可以使用下面的命令编译:
++ . -
Demo2
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
MatrixXd m = MatrixXd::Random(3,3);
m = (m + MatrixXd::Constant(3,3,1.2)) * 50;
cout << "m =" << endl << m << endl;
VectorXd v(3);
v << 1, 2, 3;
cout << "m * v =" << endl << m * v << endl;
}
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
Matrix3d m = Matrix3d::Random();
m = (m + Matrix3d::Constant(1.2)) * 50;
cout << "m =" << endl << m << endl;
Vector3d v(1,2,3);
cout << "m * v =" << endl << m * v << endl;
}
- 小结:
- 上面的两段程序功能相同。
- 第一段程序使用动态大小矩阵,矩阵大小是在运行时确定的。
- 第二段程序使用固定大小矩阵,矩阵大小是在编译时确定的。
- 随机函数的取值范围是[-1, 1]。
- 固定大小的矩阵的2个优点: