我尝试了零(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和占用的总字节数来计算此信息中允许的最大大小?
答案 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
命令在谈到“受连续地址空间限制”时所告诉你的。