-4

我正在使用 C++ 中的 eigen 库尝试一个程序,但在语法部分犯了一些错误。这是我的代码。有人可以评论我哪里出错了吗?

#include <iostream>
#include <Eigen\Dense> //EIGEN library

using namespace Eigen;
using namespace std;

int main()
{
  Matrix<double,2000,2000> A;
  Matrix<double,2000,2000> B;
  Matrix<double,2000,2000> C;

  A.setRandom(2000,2000);
  B.setRandom(2000,2000);

  //A = Dynamic2D::Random(rows, cols);
  // A<<MatrixXd::Identity(2000,2000);

  C=A*B;
}

还有什么问题是在注释行中声明矩阵 A ?

//A = Dynamic2D::Random(rows, cols);
// A<<MatrixXd::Identity(2000,2000);
4

1 回答 1

0

当矩阵维度被指定为模板参数时,Eigen 将尝试分配堆栈的存储空间。不幸的是,堆栈不足以容纳 400 万个双打。对于大型矩阵,最好使用动态大小:

MatrixXd A; A.setRandom(2000, 2000);

您可以使用赋值运算符而不是将 A 初始化为单位矩阵<<

A = MatrixXd::Identity(2000,2000);

于 2014-06-06T02:26:58.717 回答