一般来说,使用的矩阵的维数一旦过万就会引起内存溢出。
解决办法 1:打开计算机的3GB开关。
具体做法是:
右键点击我的电脑 -> 属性 -> 高级 -> 启动和故障恢复 -> 设置 -> 编辑。
进入boot.int,将你的系统名
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional "
改为
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionalwith 3GB switche" /3gb
重新启动,效果立现,在matlab中输入feature('memstats'),可以看到现在的实际内存已经变为了3GB。
解决办法 2:使用pack
在matlab中,对于非稀疏的矩阵而言,只有整块的内存才能够被使用。比如你有两块内存,一块500M,一块200M,而矩阵所需的空间要600M,即使500+200>600,可你还是不能正常运行。而pack即为内存碎片的拼接方法。
所以,最好让matlab程序分段运行,在每一段运行前,在matlab命令行中敲入"pack"。如下图所示:
可以将小内存碎片充分利用起来,积少成多,缓解内存危机。