matlab内存管理(二)

本文介绍了在Matlab中如何优化内存使用,包括确保内存连续性、减少使用双浮点数、增加虚拟内存、采用PACK命令整理内存空间、采用3GB开关启动系统、优化程序减少变量等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://hi.baidu.com/bi%CB%AB%C9%FA%BB%A8/blog/item/5ab86c38ac2f45e715cecbab.html

1,确保内存的连续性
Matlab 中数组必须占用连续分配的内存段
当无法为新建的数组分配连续的内存段的时候
Out of Memory 就会出现
由于反复分配和释放数组会使可用的连续内存段减少
实际操作中可如下处理:
a,将不用的数据存储在工作目录,让下一步计算需要的单独存储
b,用clear清空内存
c,载入需要计算的变量
d,用 pack 命令
这是将内存中的数组写入硬盘,然后重建这些数组,以减少内存碎片

可以用命令 feature('memstats')来查看内存的使用情况

2,减少使用双浮点数
Matlab 默认的数字类型是双精度浮点数double
每个双浮点数占用 8 个字节
对于一些整数操作来说,使用双浮点数显得很浪费
在很多精度要求不高的情况下,使用4个字节的单浮点数 single
可以减少一半的内存
关于单、双浮点数的精度对照如下,以便根据需要选择使用:

single: 精度 (1.1921e-007) 最大数 (3.4028e+038)
double: 精度 (2.2204e-016) 最大数 (1.7977e+308)

除了升级内存和升级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 保存变量 clear 变量 load 变量,需要时再读出来
# 如果必有必要,不要启动java虚拟机,采用matlab -nojvm启动 (在快捷方式属性里面的 "..../matlab.exe") 改为("...../matlab.exe" - nojvm)
#关闭Matlab Server

# 使用 单精度 single 短整数替代 双精度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值