C++矩阵运算库Eigen使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daybreak222/article/details/80332688

1.两种不同类型的Eigen矩阵相加,或者赋值,需要用到cast函数:

    Matrix3d m = Matrix3d::Random();
    Matrix3f m2 = m.cast<float>();
    Matrix3d m = Matrix3d::Random();
    Matrix3f m2 = Matrix3f::Random();
    Matrix3f m3 = m.cast<float>() + m2;

2.数组转化为Eigen::Matrix

int array[9];
cout << "colMajor matrix = \n" << Map<Matrix3i>(array) << endl;                      // map a contiguous array as a column-major matrix
cout << "rowMajor matrix = \n" << Map<Matrix<int, 3, 3, RowMajor>>(array) << endl;   // map a contiguous array as a row-major matrix

Map<MatrixXi>  eigMat1(array, 3, 3);                     // eigMat1和array指向的是同一个内存空间,是绑定在一起的
MatrixXi       eigMat2 = Map<MatrixXi>(array, 3, 3);    //  eigMat1和array指向不同的内存空间,互不影响

3.Eigen::Matrix转化为数组

Matrix3d eigMat;

double* eigMatptr = eigMat.data();
double* eigMatptrnew = new double[eigMat.size()];
Map<MatrixXd>(eigMatptrnew, eigMat.rows(), eigMat.cols()) = eigMat;




猜你喜欢

转载自blog.csdn.net/daybreak222/article/details/80332688