MATLAB内存溢出的解决办法

时间:2021-02-14 17:07:33

??? Out of memory. Type HELP MEMORY for your options.

在Matlab中经常发生因为大数据运算而导致的 out of memory.

那么Matlab到底能容纳多大的数据呢,先不考虑机器硬件的因素,看看Matlab自己的限制。

Matlab中能创建多大维数的矩阵?

>>zeros(1e4,1e3);               % 运行后没问题,可以通过命令whos 来查看生成的零矩阵所占的内存空间

>>zeros(1e4,1e4);                   out of memory.


还可以通过命令 memory 来查看可以使用的内存限制

>>memory

Maximum possible array:             599 MB (6.285e+008 bytes) *           当前系统数组能占的最大内存

Memory available for all arrays:   1489 MB (1.561e+009 bytes) **       当前系统变量可被分配的总空间

Memory used by MATLAB:              326 MB (3.422e+008 bytes)          Matlab运行已经使用的内存空间

Physical Memory (RAM):             1791 MB (1.878e+009 bytes)            电脑系统物理内存数量

*  Limited by contiguous virtual address space available.

** Limited by virtual address space available.

当然可使用的内存和操作系统相关

MATLAB内存溢出的解决办法

当发生 out of  memory的警告后, 除了升级内存和升级64位系统外,可以尝试下面几个方面来改善:

1.增加虚拟内存,可以将其设在c盘以外的盘。
2.采用PACK (在命令行输入 pack 整理内存空间)。
3.采用3GB 开关启动系统(修改 c盘根目录 boot.ini 启动选项加上 /3G 例如:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3G 。
4.优化程序,减少变量,save 保存变量 load 变量,需要时再读出来。
5. 如果必有必要,不要启动java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的 “..../matlab.exe”) 改为(“...../matlab.exe” - nojvm)。
6. 关闭Matlab Server。
7.使用 单精度 single 短整数替代 双精度。
8. 借助稀疏矩阵来储存。