【发布时间】:2012-05-09 22:27:31
【问题描述】:
我正在尝试在 C++ 中计算一个非常大的矩阵 (11300x21500) 的逆矩阵。到目前为止,我已经尝试过 Eigen 和 Armadillo 库,但在初始化阶段都失败了,说内存不足。有什么办法可以克服这种情况吗?
提前致谢
附言
我应该将矩阵的大小更正为 21500x21500。正如 UmNyobe 所建议的,这不是方阵。它实际上是观察矩阵,X,我正在尝试计算 (XTX)-1
我有一个 8GB 内存(在 64 位系统中),但我不认为我正在使用所有这些内存空间。任务管理器显示出错时的内存使用量为1GB。可能在 Windows7 中有一个操作系统命令,当应用程序的内存使用量超过 1GB 时会关闭它。
顺便说一句,我最初的目的是对这个观察矩阵进行回归。
还有一件事:观察矩阵 X 的每一行中的大多数列都为零。有没有办法利用这一点来限制反转操作中的内存使用?
【问题讨论】:
-
为什么你的尺寸不相等??
-
该矩阵包含大约 1GB 或 2GB 的数据,具体取决于您是 4 字节还是 8 字节矩阵条目。你是在 32 位机器上吗?
-
Steve 我本来要写关于内存的,你应该先写得更详细。
-
你的意思是伪逆吗?为什么要计算逆?如果是用于线性回归,我建议使用其他技术。
-
我认为您需要告诉我们更多关于您尝试执行此计算的机器的信息 - 例如内存、32 位或 64 位等。完成后重新打开的标志。
标签: c++ sparse-matrix matrix-inverse