官网eigen3
安装
#github 有个mirror,版本3.3.4 from 2017
git clone https://github.com/eigenteam/eigen-git-mirror
#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安装后,头文件安装在/usr/local/include/eigen3/
typedef Matrix< std::complex<double> , 2 , 2 > Eigen::Matrix2cd
typedef Matrix< std::complex<float> , 2 , 2 > Eigen::Matrix2cf
typedef Matrix< double , 2 , 2 > Eigen::Matrix2d
typedef Matrix< float , 2 , 2 > Eigen::Matrix2f
typedef Matrix< int , 2 , 2 > Eigen::Matrix2i
typedef Matrix< std::complex<double> , 2 , Dynamic> Eigen::Matrix2Xcd
typedef Matrix< std::complex<float> , 2 , Dynamic> Eigen::Matrix2Xcf
typedef Matrix< double , 2 , Dynamic> Eigen::Matrix2Xd
typedef Matrix< float , 2 , Dynamic> Eigen::Matrix2Xf
typedef Matrix< int , 2 , Dynamic> Eigen::Matrix2Xi
typedef Matrix< std::complex<double> , 3 , 3 > Eigen::Matrix3cd
########
transpose 转置
conjugate 共轭
adjoint 伴随
第一个程序
#include <iostream>
#include <Eigen/Dense>
using namespace std;
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);
cout << m << endl;
}
编译 g++ -I/usr/local/include/eigen3 1.cpp -o 1
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
MatrixXd m = MatrixXd::Random(3,3); //随机数-1 ~1
cout << m << endl;
m = (m + MatrixXd::Constant(3,3,1.2))* 50;
cout << " m2 =" << m << endl;
MatrixXd n = MatrixXd::Constant(3,3,2);//常矩阵
cout << " n =" << n << endl;
VectorXd v(3);
v << 1,2,3;
cout << v<< endl;
cout << "m * v" << endl << m * v << endl; //向量矩阵计算
}
使用确定维数的类VS 使用不确定维数,推荐使用固定维度的矩阵和数组,编译更快
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix3d m = Matrix3d::Random();
cout << "m=" << endl << m << endl;
m = (m + Matrix3d::Constant(1.2)) * 50;
cout << "m2" << endl << m << endl;
Vector3d v(1,2,3);
cout<< "v" << endl << v << endl;
cout << "m * v" << endl << m * v << endl;
}
头文件包含最好
#include <eigen3/Eigen/Eigen>
CMakeLists.txt
include_directories(/usr/include/eigen3)
只需要包含头文件,没有依赖性和链接内容