如何解决MATLAB中的内存不足错误?

时间:2010-08-06 09:26:59

标签: matlab

我想计算2个具有大小的协方差矩阵(10304,1034),matlab创建第一个,但是当它运行第二个命令时,会发生以下错误:

>> j=ones(10000,10000);
>> jj=ones(10000,10000);
??? Out of memory. Type HELP MEMORY for your options.

我的笔记本电脑的RAM是2GB,但它仍然有1 GB免费。我使用的是Windows 7和32位MATLAB 2009b。

如何解决此错误?

4 个答案:

答案 0 :(得分:7)

10k×10k的双精度数组使用1e8 * 8字节,相当于800MB。 MATLAB需要这800MB连续。最有可能的是,你的1GB可用内存有点碎片,因此MATLAB无法将新阵列放入RAM中。

使用命令MEMORY找出MATLAB在给定时刻可以处理的最大变量大小。

答案 1 :(得分:2)

尝试使用稀疏矩阵,在这种情况下,MATLAB不会分配整个空间。

答案 2 :(得分:1)

尝试将这两个选项中的任何一个添加到为matlab.exe处理分配的内存中稍微增加一点。

1-为Matlab.exe任务提供更高的优先级。您可以通过转到任务管理器,进程选项卡,右键单击Matlab.exe任务,选择优先级并将其设置为更高的优先级(比如实时),这可以告诉Windows为此进程分配更多资源。

2-一般增加应用程序的页面文件大小。您可以通过右键单击MyComputer - > properties-> Advanced System Settings - > Advanced->来完成此操作。性能 - >虚拟内存(更改..)。然后从自动....勾选并将初始和最大页面大小设置为10000 MB。

答案 3 :(得分:1)

转到Matlab - >文件 - >偏好设置 - >常规 - > Java堆内存 - >并提高水平..这解决了我的问题