内存管理函数
- emory:显示可用内存
- hos:显示给工作区分配了多少内存
- pack:把已经存在的变量保存到磁盘
- clear:从内存中删除变量
- save:有选择的把变量保存到磁盘
- load:把已经保存的数据文件用load函数重新载入。
- quit:退出MATLAB,并返回所有分配的内存到系统中。
怎么高效使用内存
压缩内存的使用
1.仅导入需要的文件大小
2.以块为单位处理数据
3.避免建立较大的临时数组
4.使用嵌套函数来传递数据
使用适当的数据存储方式
- 适当的数据类型
- 读入文件时选择适当的数据类型(默认读入的按double保存)
fid=fopen('large_file_of_uint8s.bin','r');
a=fread(fid,le3,'uint8');
a=fread(fid,le3,'uint8=>uint8');
-尽可能使用稀疏矩阵(只存储非零元素和它们的位置)
避免数据碎片状存储
多用pack()函数
内存回收
自己用
clear Var1,Var2…
回收。
或者通过PC的系统和存储硬件来解决“Out of Memory”问题
程序调试和优化
使用直接调试法
- 去掉怀疑语句的分号
- 在疑问语句附件添加显示某些关键变量的语句、
- 在程序适当位置添加keyboard,K>> 可以查看或者修改变量的数值。在提示符输入return命令之后继续执行。
- 利用echo命令,运行程序时在命令窗口逐行显示正在执行的代码。
遇到更复杂的就需要
使用Debugger窗口调试
实际就是M文件编辑器,使用函数折叠和断点设置。会出现k>>,输入想查看值的符号即可查看。
在命令行窗口调试
懒的写了😄 一堆函数
2.调试工具
MATLAB提供了大量的调试函数供用户使用,这些函数可以通过help指令获得,在MATLAB命令执行窗口输入如下指令:
>> help debug
用户便可获得这些函数,这些函数都有一个特点,就是以"db"开头,具体功能和作用如下:
dbstop - Set breakpoint %设置断点
dbclear - Remove breakpoint %清除断点
dbcont - Resume execution %重新执行
dbdown - Change local workspace context %下移本地工作空间内容
dbmex - Enable MEX-file debugging %使MEX文件调试有效
dbstack - List who called whom %列出函数调用关系
dbstatus - List all breakpoints %列出所有断点
dbstep - Execute one or more lines %单步或多步执行
dbtype - List M-file with line numbers %列出M文件
dbup - Change local workspace context %上移本地工作空间内容
dbquit - Quit debug mode %退出调试模式
在MATLAB中,这些调试函数都有相应的图形化调试工具,使得程序的调试更加方便、快捷。这些图形化调试工具在MATLAB编译器的"debug"和"Breakpoints"菜单中,以方便调试使用。
profile
它可以用来优化我们使用的程序。
运行方法:
- desktop-profiler
- tool -open profiler
- 在命令行输入:profile viewer
- 历史命令选择一条语句,单击鼠标右件从菜单中选择Profile Code(对应输入文件位置或命令)
报告
报告结果:function name、calls(函数被调用的次数)、total time(总共被调用的时间)、self time(函数自己耗费的时间)
命令格式
profile viewer
profile on
profile on-detail level
profile on-history
profile off
profile resume
profile clear