我正在用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);
答案 0 :(得分:0)
当矩阵尺寸被指定为模板参数时,Eigen将尝试分配堆栈的存储空间。不幸的是,筹码量不足以容纳400万双打。对于大型矩阵,最好使用动态大小:
MatrixXd A;
A.setRandom(2000, 2000);
您可以使用赋值运算符而不是<<
来初始化A作为单位矩阵:
A = MatrixXd::Identity(2000,2000);