2012-12-07 60 views
1

我尝试了零(1500 * 64),但它表示“超出了程序允许的最大变量大小”。
但[C,MAXSIZE] = COMPUTER返回MAXSIZE = 2.1475e + 009
那么为什么它不工作?此外,在尝试在Matlab命令行上发布这个命令几次后,我尝试了从零(500 * 64)到零(1500 * 64)的所有内容以找到允许的最大值,并且有时返回“允许的最大可变大小该程序已超出。“为500 * 64,有时返回“内存不足”。错误。这可能是什么原因?这就是所述存储器命令返回:Matlab中数组的最大尺寸

最大可能数组: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还是占用的字节总数?

回答

3

命令

x = zeros(1500*64); 

尝试创建双精度零,每面96000层的元件,需要73千兆字节的方阵。

我怀疑要使用

x = zeros(1500,64); 

这产生一个1500通过-64阵列双精度零的,需要的存储器0.8兆字节。

+0

这无疑是user13267所犯的错误。不是真正的问题,但那不是你的错。 +1 –

+0

抱歉,我的错;感谢你的回答 :) – user13267

1

当我谷歌的错误消息,第一击是MathWorks公司的描述性帮助页面,MATLAB的开发商:

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

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