【问题标题】:the maximum size of matrix in Matlab [closed]Matlab中矩阵的最大尺寸[关闭]
【发布时间】:2020-02-04 04:05:59
【问题描述】:

我想求解线性方程 Ax=b,其中 A 是 40000x400000 矩阵,x 和 b 是 400000x1 数组。当我在 MATLAB 中使用 A\b 时,出现“内存不足”错误。由于矩阵的大小太大,我无法在 MATLAB 中使用 A\b。如何在 Matlab 中不使用命令 A\b 来解决我的问题。

感谢您的帮助

【问题讨论】:

  • A 和 B 稀疏吗?
  • 它不能解决您的问题,但 MATLAB 中的 memory 命令会告诉您可以在您的机器上创建的数组/矩阵的最大大小。
  • @Kavka: memory 仅适用于 Windows。

标签: matlab size linear-equation


【解决方案1】:

问题部分出在 Matlab 上,部分出在您的机器上。

首先,好好想想如果你真的需要用一个40000x400000来解决这个问题,也许你可以简化它,也许你可以分割你的问题,也许系统是解耦的,检查好就好了。

对于上下文,要存储 8 字节浮点数的 40000x400000 矩阵,您需要大约 120gb。这可能太多了,很有可能您甚至没有足够的可用磁盘空间。

如果这个矩阵有很多零,至少比非零多得多,那么你可以利用 Matlab 的稀疏矩阵函数。它们在不存储整个矩阵的情况下工作,基本上只对非零数进行操作。

如果你很懒,但你有一台非常好的机器(比如 1TB 的 SSD),你可以考虑增加 linux 中的分页文件的大小(或在 windows 上类似的文件)。这基本上意味着磁盘中有一个空间,您可以让计算机像使用 RAM 内存一样使用它。虽然内存不会崩溃,但您需要执行的操作会花费非常长的时间,因此请考虑从较小的矩阵开始来衡量执行时间,该时间应该随着向量长度的立方而增长。

因此,举个例子,试着回顾一下你手头的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多