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命令在谈到“受连续地址空间限制”时告诉你的。

    链接地址: http://www.djcxy.com/p/29275.html

    上一篇: maximum size for an array in Matlab

    下一篇: F# compiler throws OutOfMemoryException