1

我尝试了 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

小号 =

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

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

4

2 回答 2

3

命令

 x = zeros(1500*64);

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

我怀疑你想使用

x = zeros(1500,64);

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

于 2012-12-07T01:47:25.637 回答
1

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

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

对于“Out of Memory”错误,取“Maximum possible array: 486 MB (5.094e+008 bytes)” memory,除以数组元素的大小(双精度实数值为 8 字节,即MatLab 默认使用什么)。它如此低的原因是由于地址空间碎片,这是memory命令在谈论“受连续地址空间限制”时告诉您的内容。

于 2012-12-07T01:40:30.523 回答