簡體   English   中英

如何將靜態2d數組轉換為Eigen

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM