C ++中的分段错误(特征库)

时间:2018-07-17 11:38:58

标签: c++ segmentation-fault eigen

我正在尝试使用本征库来确定超定线性系统的最小二乘解。

当矩阵大小较大时(如下面的程序所示),如6000行,代码将进入分段错误。当行数= 5000时,该程序正在运行。我读了很多有关修复分段错误的文章,但找不到任何有用的东西。

#include <cstdlib>
#include <iostream>
#include <Eigen/Dense>
#include <complex>
#define cols 45
#define rows 6000

using namespace Eigen;

int main() {
    int i,j;
    Matrix<std::complex<double>, rows,cols> zMat;

    for(i=0;i<rows;i++) {
        for(j=0;j<cols;j++) {
            zMat(i,j)=std::complex<double>(rand(),rand());
        }
    }

    VectorXcd ampIn(rows);
    for(i=0;i<rows;i++)
        ampIn(i)=std::complex<double>(rand(),rand());

    //Solving Matrix equation using QR Decomposition
    VectorXcd solution = zMat.colPivHouseholderQr().solve(ampIn);

    std::cout << "The least-squares solution is:\n" << solution << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:2)

对于Eigen库,对于大于1 MB的数据,请使用MatrixXcd而不是Matrix<std::complex<double>...