【问题标题】:How to convert static 2d array into Eigen如何将静态二维数组转换为特征值
【发布时间】:2019-05-04 09:20:18
【问题描述】:

对不起,我是 C++ 的初学者。所以我不使用指针。我需要将 C++ 的静态二维数组转换为 Eigen 库格式。我需要计算一个大矩阵的特征值和特征向量,因为这是我应用的问题。

我的代码是这样的

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++ 的静态一维数组转换为 Eigen 库格式)是正确的。我不明白之前的sn-p哪里出错了。

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);

非常感谢您!

【问题讨论】:

标签: c++ eigen


【解决方案1】:

Eigen::Map&lt;&gt; 的构造函数重载的语义只允许将“原始”数组映射到其 Eigen 等效项,但不允许映射原始数组的原始数组(即 2D 原始数组)。

要将您的 2D 数组转换为您的 Eigen 等效选择,您需要将前者表示为 1D 原始数组,

double matr1[100 * 100];

参见例如下面是关于如何轻松地将二维数组的逻辑映射到一维数组的问答:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2019-07-09
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多