【问题标题】:maximum size for an array in MatlabMatlab中数组的最大大小
【发布时间】:2012-12-07 01:36:41
【问题描述】:

我尝试了 zeros(1500*64),但它显​​示“超出了程序允许的最大变量大小。”
但是 [C,MAXSIZE] = COMPUTER 返回 MAXSIZE = 2.1475e+009
那么为什么它不起作用呢?此外,在尝试在 Matlab 命令行上多次发出此命令后,我尝试了从零(500*64)到零(1500*64)的所有方法来找到允许的最大值,有时它返回“允许的最大变量大小程序已超出。”对于 500*64,有时会返回“内存不足”。错误。这可能是什么原因?这是内存命令返回的内容:

最大可能数组:486 MB(5.094e+008 字节)* 内存 适用于所有阵列:1436 MB(1.506e+009 字节)** 使用的内存 通过 MATLAB:353 MB(3.697e+008 字节)物理内存 (RAM):3070 MB(3.219e+009 字节)

  • 受限于可用的连续虚拟地址空间。 ** 受限于可用的虚拟地址空间。

[u,s] 的输出 = 内存

[u, s] = 记忆

你 =

MaxPossibleArrayBytes: 509411328
MemAvailableAllArrays: 1.5057e+009
        MemUsedMATLAB: 369819648

s =

VirtualAddressSpace: [1x1 struct]
       SystemMemory: [1x1 struct]
     PhysicalMemory: [1x1 struct]

如何根据这些信息计算允许的最大大小,包括元素数量和占用的总字节数?

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    命令

     x = zeros(1500*64);
    

    尝试创建一个双精度零的方阵,每边 96000 个元素,需要 73 GB。

    我怀疑你想使用

    x = zeros(1500,64);
    

    创建一个 1500×64 的双精度零数组,需要 0.8 兆字节的内存。

    【讨论】:

    • 这无疑是 user13267 犯的错误。不是真的问的问题,但这不是你的错。 +1
    • 对此很抱歉;我的错;谢谢你的回答:)
    【解决方案2】:

    当我在谷歌上搜索该错误消息时,首先点击的是来自 MatLab 开发者 MathWorks 的描述性帮助页面:

    据此,您应该使用 computer 命令,而不是 memory,来了解您的 MatLab 版本支持的最大矩阵大小。

    对于“内存不足”错误,取memory 报告的“最大可能数组:486 MB(5.094e+008 字节)”,然后除以数组元素的大小(双精度为 8 字节)精度实数值,这是 MatLab 默认使用的)。它如此低的原因是由于地址空间碎片,这是memory 命令在谈到“受连续地址空间限制”时告诉您的。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2012-04-06
      • 1970-01-01
      相关资源
      最近更新 更多