[英]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.