C ++程序中的语法错误,无法弄清楚

时间:2014-06-06 02:05:16

标签: c++ eigen eigen3

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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