gpt4 book ai didi

C++ Armadillo princomp() 段错误

转载 作者:行者123 更新时间:2023-11-30 03:59:39 24 4
gpt4 key购买 nike

我正在运行如下代码:

#define ARMA_64BIT_WORD
#include <iostream>
#include </usr/include/armadillo>
using namespace arma;
typedef Mat<float> fmat;
typedef Col<float> fvec;

int main (int argc, char** argv)
{

fmat A;
A.load("matrix.txt");
fmat coeff;
fmat score;
fvec latent;
fvec tsquared;

princomp(coeff, score, latent, tsquared, A);
return 0;
}

matrix.txt 包含一个 2×46341(2 行,46341 列)矩阵。它运行良好,但是当我将矩阵增加到 2×46342(2 行,46342 列)时,发生了段错误(核心已转储)。

列数有限制吗?还是我写错了什么?

我在 Ubuntu 12.04.4 LTS (GNU/Linux 3.2.0-40-virtual x86_64) 中运行,内存:16GB

谢谢!

最佳答案

princomp() 将计算协方差矩阵 (X' * X),在您的情况下,它的大小为 46342x43642。它的大小为 16.001 GB,而您只有 16 GB。因此失败。

如果您使用调试符号(或不使用 -DNDEBUG 或类似符号)进行编译,则应显示实际的内存分配失败。

我无法推荐任何其他解决方案,因为我不知道您要解决什么问题。

关于C++ Armadillo princomp() 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26826808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com