加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]matlab运行程序时显示内存不足的解决方法(总结他人的建议)

(2018-11-06 16:24:08)
标签:

转载

分类: matlab
我电脑8G内存,matlab运行竟然提示内存不足,怪哉怪哉。
1、如果你所使用的电脑配置了超过3G的内存,可以在启动文件BOOT.INI脚本中加入/3GB开关

 具体做法:修改C: Boot.ini文件如下:

[boot loader] 
timeout=30 
default=multi(0)disk(0)rdisk(0)partition(2)WINNT 
[operating systems] 
multi(0)disk(0)rdisk(0)partition(2)WINNT="????" /3GB
注意后面的/3GB就是后加上的。重新启动系统再次运行matlab。
2、在我的电脑属性中找到环境变量设置,在系统变量中增加“MATLAB_MEM_MGR”变量,值为“fast”
3、电脑换64位操作系统,装64位matlab
4、增加内存
5、优化matlab程序
6、在matlab命令窗口执行 feature('memstats') ,可以查看内存的使用情况
      物理内存:使用,可用,总数
      交换页面:使用,可用,总数
      虚拟内存:使用,可用,总数
      最大连续可用内存块:按从大到小排序,以及总数
     命令 whos 和 whos global 可以分别查看所有局部和全局变量占用的内存大小
7、确保内存的连续性
  Matlab 中数组必须占用连续分配的内存段,当无法为新建的数组分配连续的内存段的时候,Out of Memory 就会出现。由于反复分配和释放数组会使可用的连续内存段减少,实际操作中可如下处理:
  1)将不用的数据存储在工作目录,让下一步计算需要的单独存储
  2)运行程序之前最好依次执行“clear”和“pack”命令,用clear清空内存;用 pack 命令将内存中的数组写入硬盘,然后重建这些数组,以减少内存碎片
  3)载入需要计算的变量
8、减少使用双浮点数
  Matlab 默认的数字类型是双精度浮点数double,每个双浮点数占用 8 个字节。对于一些整数操作来说,使用双浮点数显得很浪费,在很多精度要求不高的情况下,使用4个字节的单浮点数 single,可以减少一半的内存。关于单、双浮点数的精度对照如下,以便根据需要选择使用:  
  single: 精度 (1.1921e-007) 最大数 (3.4028e+038)
  double: 精度 (2.2204e-016) 最大数 (1.7977e+308)

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有