Matlab中数组的最大大小

时间:2012-12-07 01:36:42

标签: arrays matlab

我尝试了零(1500 * 64),但它说“超出了程序允许的最大变量大小。”
但是[C,MAXSIZE] = COMPUTER返回MAXSIZE = 2.1475e + 009
那为什么不工作呢?此外,在尝试在Matlab命令行上发出这个aommand几次之后,我尝试了从零(500 * 64)到零(1500 * 64)的所有内容以找到允许的最大值,有时它返回“允许的最大可变大小”超出了计划。“对于500 * 64而且有时会返回“Out of memory”。错误。可能是什么原因?这是memory命令返回的内容:

  

最大可能阵列: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] =记忆

u =

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

s =

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

如何根据元素的nuber和占用的总字节数来计算此信息中允许的最大大小?

2 个答案:

答案 0 :(得分:3)

命令

 x = zeros(1500*64);

尝试创建双精度零的方阵,每边96000个元素,需要73千兆字节。

我怀疑你想用

x = zeros(1500,64);

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

答案 1 :(得分:1)

当我谷歌搜索该错误消息时,首先点击是MathWorks的开发人员MathWorks的描述性帮助页面:

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

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