版权声明:本文为博主原创文章,未经博主允许不得转载。 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;