[英]How to convert static 2d array into Eigen
对不起,我是C ++的初学者。 所以我不使用指针。 我需要将C ++的静态二维数组转换为特征库格式。 我需要计算大矩阵的特征值和特征向量,因为它是我应用的问题。
我的代码是这样的
double matr1[100][100];
MatrixXd copy_matr1;
for (int i = 0; i < 100; i++)
for (int j = 0; j < 100; j++)
matr1[i][j] = i + j;
copy_matr1 = Map<MatrixXd>(matr1);
或(用下一行替换最后一行)
copy_matr1 = Map<MatrixXd>(matr1, 100, 100);
但最后一行是错误的。 什么是正确的符号?
但下面的代码(将C ++的静态1d数组转换为Eigen库格式)是正确的。 我无法理解上一段代码中的错误。
double arr1[100];
MatrixXd copy_arr1;
for (int i = 0; i < 100; i++)
arr1[i] = i + 10;
copy_arr1 = Map<MatrixXd>(arr1);
或(用下一行替换最后一行)
copy_arr1 = Map<MatrixXd>(arr1, 100);
非常感谢你提前!
Eigen::Map<>
的构造函数重载的语义仅允许将“原始”数组映射到其Eigen等价物,但不允许映射原始数组的原始数组(即2D原始数组)。
要将2D数组转换为您选择的Eigen等价物,您需要将前者表示为1D原始数组,
double matr1[100 * 100];
有关如何轻松将2D阵列的逻辑映射到1D阵列,请参阅以下问答:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.