Matlab中数组的最大尺寸
我尝试了零(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字节)物理内存: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]
如何根据这些信息来计算我允许的最大大小,无论是根据元素的总数还是占用的总字节数?
命令
x = zeros(1500*64);
试图创建一个双精度零的方阵,每边96000个元素,需要73千兆字节。
我怀疑你想使用
x = zeros(1500,64);
它创建一个1500×64的双精度零数组,需要0.8兆字节的内存。
当我为那个错误信息google时,首先点击是MatLab的开发者MathWorks的描述性帮助页面:
据此,您应该使用computer
命令而不是memory
来了解您的MatLab版本支持的最大矩阵大小。
对于“内存”的错误,采取“最大可能的数组:486 MB(5.094e + 008字节)”报道由memory
,并除以阵列元件的大小(用于双精度实数值,8个字节,其是MatLab默认使用的)。 这么低的原因是由于地址空间碎片,这是memory
命令在谈到“受连续地址空间限制”时告诉你的。