转自:http://my.donews.com/deng/2006/09/24/vijgqxehmkxiruywdauvxyiafogtskeymhyw/
用 Matlab 进行大规模科学计算或仿真时,内存是一个需要时常注意的问题。当你写的 Matlab 程序跳出“Out of Memory” 时,以下几点措施是需要优先考虑的解决方法:
1. 确保内存的连续性
Matlab 中数组必须占用连续分配的内存段,当无法为新建的数组分配连续的内存段的时候,”Out of Memory” 就会出现。由于反复分配和释放数组会使可用的连续内存段减少,因此当 Matlab 刚刚启动时其连续内存最多,此时往往可以新建非常大的数组,这一点可以用命令 feature(‘memstats’)(在 7.0 版本以上)看出。如果现实的最大连续内存段很小,但实际可用内存(非连续的)仍旧很多,则表明内存中碎片太多了。此时可以考虑用 pack 命令,pack 命令的作用就是将所有内存中的数组写入硬盘,然后重新建立这些数组,以减少内存碎片。此外,在命令行或者程序中都可以使用 clear 命令,随时减少不必要的内存。
2. 3GB 开关
由于32位 Windows 操作系统的限制,每个进程只能使用最多 2GB 的虚拟内存地址空间,因此 Matlab 的可分配内存也受到相应的限制。Matlab 7.0.1 引进了新的内存管理机制,可以利用 Windows 的 3GB 开关,使用 3GB 开关启动的 Windows 每个进程可以在多分配 1 GB 的虚拟地址空间,具体的操作方法可见:http://www.mathworks.com/support/tech-notes/1100/1106.html
3. 减少使用双浮点数
Matlab 默认的数字类型是双精度浮点数 (double),每个双浮点数占用 8 个字节。对于一些整数操作来说,使用双浮点数显得很浪费。在 Matlab 中可以在预先分配数组时指定使用的数字类型如以下命令:zero(10, 10, ‘uint8′) 。对于浮点数,在很多精度要求不高的情况下,可以使用4个字节的单浮点数 (single),可以减少一半的内存。关于单、双浮点数的精度对照如下,以便根据需要选择使用:
single: 精度 (1.1921e-007) 最大数 (3.4028e+038)
double: 精度 (2.2204e-016) 最大数 (1.7977e+308)
分享到:
相关推荐
MATLAB使用技巧,快捷键技巧、Matlab注释技巧、MATLAB内存管理、出现问题等
内存管理内幕 dragonimp's blog coder.developer.[designer].ArchitecturE.manager.^_^... posts - 29, comments - 121, trackbacks - 27 My Links Home Contact Login News !!! Article ...
Matlab技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
主要的问题来自于matlab的内存管理机制: 对于一个数组,matlab先在内存中找一块放得下的连续空间,如果这个数组一直增大到那个连续空间放不下了, matlab会去找另外一个放得下的连续空间(好像记得在什么地方...
matlab常用指令:1.1 通用信息查询(General information) demo 演示程序 help 在线帮助指令 helpbrowser 超文本文档帮助信息 helpdesk 超文本文档帮助信息 helpwin 打开在线帮助窗 info MATLAB 和MathWorks 公司的...
主要的问题来自于matlab的内存管理机制: 对于一个数组,matlab先在内存中找一块放得下的连续空间,如果这个数组一直增大到那个连续空间放不下了, matlab会去找另外一个放得下的连续空间(好像记得在什么地方...
用户可以将自己的工作目录列入MATLAB搜索路径,从而将用户目录纳入MATLAB系统统一管理。设置搜索路径的方法有: 用path命令设置搜索路径。例如,将用户目录c:\mydir加到搜索路径下,可在命令窗口输入命令: path...
MATLAB命令大全 管理命令和函数 help 在线帮助文件 doc 装入超文本说明 what M、MAT、MEX文件的目录列表 type 列出M文件 lookfor 通过help条目搜索关键字 which 定位函数和文件 Demo 运行演示程序 Path ...
服务宗旨:资源亲测可运行...-OpenFfm:绿色内核快速自由内存卷积库。 -OpenBmm:块矩阵代数库。 -OpenOpr:用于H矩阵压缩的常用边界元算子的库。 -OpenRay:用于三维光线跟踪的库。 -OpenEbd:绿色内核的二维卷积库。
简单动画Matlab绘图时...想必大家都知道windows资源管理器里面的CPU及内存的使用记录的图形,在matlab里面如何实现呢?方法很简单,动态修改x坐标轴的范围即可。下面是一个演示程序,希望对有需要的朋友能有启发。^_^
“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”(具体操作见GIF图片操作)。 2. 建立链接对象——database 调用格式: conna=database; 如conna=...
“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”(具体操作见GIF图片操作)。 2. 建立链接对象——database 调用格式: conna=database; 如conna=...
MatLab 命令大全 管理命令和 help 在线帮助文件 doc 装入超文本介绍说明 what M、MAT、MEX文件目录列表 type 列出M文件 lookfor 通过help条目搜索关键字 which 定位和文件 Demo 运行演示 Path 控制MATLAB搜索路径 ...
“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”(具体操作见GIF图片操作)。 2. 建立链接对象——database 调用格式: conna=database; 如conna=...
基于matlab面向对象编程,主要用于简单的作业,数据只保存在内存中。 0积分,给个好评叭QwQ
1.2 工作空间管理(Managing the workspace) clear 从内存中清除变量和函数 exit 关闭MATLAB load 从磁盘中调入数据变量 pack 合并工作内存中的碎块 quit 退出MATLAB save 把内存变量存入磁盘 who 列出工作内存中的...
指针、内存管理等 第三学期 - 嵌入式系统课程 - 汇编和低级 C - 编程技术课程 - 排序、加权图、代码效率和 OOP 基础 第四学期 - 面向对象编程课程 - OOP 原理和 Java 基础 - 人工智能课程 - 人工智能基础知识,机器...
4删除然后重新创立Winnt\System32\Wbem\Repository文件夹中的文件:桌面上右击我电脑,然后单击管理,"服务和应用程序"下,单击服务,然后关闭并停止WindowsManagementInstrumentation服务。 删除Winnt\System32\...
1001条加快MATLAB代码运行速度的建议和例子,包括代码分析,并行,GPU加速,隐式矢量化并行操作,内存管理等
“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”(具体操作见GIF图片操作)。 2. 建立链接对象——database 调用格式: conna=database; 如conna=...