楼主: xjsunxm
2163 0

[学习分享] Matlab Out of memory 解决 [推广有奖]

  • 0关注
  • 0粉丝

已卖:156份资源

博士生

57%

还不是VIP/贵宾

-

威望
0
论坛币
4034 个
通用积分
1.0054
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
3424 点
帖子
123
精华
0
在线时间
490 小时
注册时间
2008-11-21
最后登录
2020-11-30

楼主
xjsunxm 发表于 2011-4-13 09:25:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Matlab Out of memory问题总结【原创】(一)

不知道为什么论坛里没有关于MATLAB常见问题的一些总结贴,我在这里抛砖引玉了,希望各位高手能够不吝指教,多多发表自己对MATLAB使用的一些感悟和总结!



Out of memory问题总结【原创】——最有效的方法



首先,我要声明,matlab自带的Help才是最权威的Matlab学习资料,如果有时间好好学习一下或是可以高效的使用的话,一定受益匪浅!比如说像Out of Memory这个问题,最开始我都是用Help memory,几乎得不到任何信息;然后就是去网上搜索此类问题的解决方法,一般有这几种:
除了升级内存和升级64位系统外,下面几个方法也是解决之道。
# 增加虚拟内存
# 采用PACK (在命令行输入 pack 整理内存空间)
# 采用3GB 开关启动系统(修改 c盘根目录 boot.ini 启动选项加上 /3G 例如:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3G
# 优化程序,减少变量 (使用稀疏矩阵 sparse save 保存变量 load 变量,需要时再读出来
# 如果必有必要,不要启动java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的 "..../matlab.exe" 改为("...../matlab.exe" - nojvm
#关闭Matlab Server  
# 使用 单精度 single 短整数替代 双精度。
现在看来这些解决方法对于我的问题来说根本就是“治标不治本”,不能解决实际问题,后来在一个师兄的提醒下Help out of memory,终于找到了解决此类问题的方法。在此感谢这位师兄啊!
重申――MatlabHelp才是Matlab的最权威的指导材料!!!
其实我的所谓原创就是对Help out of memory的一些归纳总结而已,有兴趣的话大家可以自己去看!!!
问题一:Matlab是如何存储矩阵的
Matlab中矩阵是以Block,也就是块的形式存储的。也就是说,当Matlab在为即将存储的矩阵划分块时,如果没有相应大小的连续内存,即使实际内存没有被完全使用,他还是会报告“Out of Memory”。
问题二:如何高效使用Memory
由于在使用的过程中,由于存储单元的不断的被分配和清除,内存会被分割成不连续的区域,这是很容易造成“Out of Memory”。
1.
为矩阵变量预制内存而不是动态分配
在动态分配的过程中,由于开始Matlab所用的Block随着矩阵的增大而连续的为此矩阵分配内存,但是由于Block的不连续性,很有可能最开始分配的Block不能满足存储的需要,Matlab只好移动此Block以找到更大的Block来存储,这样在移动的过程中不但占用了大量的时间,而且很有可能它找不到更大的块,导致Out of Memory。而当你为矩阵变量预制内存时,Matlab会在计算开始前一次性找到最合适的Block,此时就不用为变量连续的分配内存。
比较下面两个程序:

for k = 2:1000

x(k) = x(k-1) + 5;

end

x = zeros(1, 1000);
for k = 2:1000

x(k) = x(k-1) + 5;

end
显然,第二个更好!!!最好的方法是,在程序一开始就位所有大的矩阵变量预制存存储单元!!!


Note:转自http://www.ilovematlab.cn/thread-19609-1-1.html
http://www.ilovematlab.cn/thread-19610-1-1.html
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:memory MATLAB atlab matla Atl MATLAB memory

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 00:24