Matlab中的内存仅受操作系统可用的内存量(包括虚拟内存)的限制.矩阵作为连续空间存储在内存中,因此如果你有一个占用8GB内存的矩阵,你需要一块8GB的大块才能在内存中使用.
您可以使用该memory命令提供有关可用内存的详细统计信息,包括单个矩阵可用的连续内存量.例如:
> memory
Maximum possible array: 677 MB (7.101e+008 bytes) *
Memory available for all arrays: 1601 MB (1.679e+009 bytes) **
Memory used by MATLAB: 446 MB (4.681e+008 bytes)
Physical Memory (RAM): 3327 MB (3.489e+009 bytes)
* Limited by contiguous virtual address space available.
** Limited by virtual address space available.
Run Code Online (Sandbox Code Playgroud)
要计算Maximum possible array值对应的数组大小,只需除以每个数组元素所需的字节数.从memory文档:
最大可能数组
Maximum Possible Array是最大的连续空闲内存块的大小.因此,它是MATLAB此时可以创建的最大单个数组的上限.
MATLAB从以下两个值中的较小值派生此数字:
Run Code Online (Sandbox Code Playgroud)* The largest contiguous memory block found in the MATLAB virtual address space * The total available system memory要查看此数字表示的数组元素数,请除以数组类中的字节数.例如,对于双数组,除以8. MATLAB可以创建的实际元素数总是小于此数.
Mathworks公司还提供了关于如何避免详细的文档Out of Memory错误在这里.