改善Matlab的运行效率的技巧

5星(超过95%的资源)
所需积分/C币:23 2012-04-19 22:11:06 605KB PDF
86
收藏 收藏
举报

改善Matlab的运行效率 一叶方舟 2012.04 1. 改善运行的技巧 1.1 分析程序的运行状况 1) Profiler工具 使用Profiler工具找到话费时间比较多的代码行的位置并优化这些代码 2) 查看运行时间的函数 tic --程序段 time=toc 3) 计算短程序运行所花费的时间 有的程序很短,运行时,速度太快,以至于使用tic和toc不能得到有用的信息,可尝试把程序放到一个循环中来计算 tic for k=1:100 --运行程序100次 end toc 1.2 循环矢量化 1) 矢量化方法 矢量化是指将for循环和while循环转换为等价的矢量或矩阵操作 2) 使用矢量化的函数 Table 1 MATLAB中使用了矢量化的函数 all diff ipermute permute reshape squeeze any find logical prod shiftdim sub2ind cumsum ind2sub ndgrid repmat sort sum 1.3 数组的内存预分配 1) 给数组预分配内存 预分配使得不必在每次数组变大时进行改变,针对不同类型的数组使用合适的预分配函数 数组类型 预分配函数 示例 数值数组 zeros y=zeros(1,100) 单元数组 cell B=cell(2,3); B{1,3}=1:3; B{2,2}=’string’; 结构数组 struct repmat data=repmat(struct(‘x’.[1 3],… ‘y’,[5 6]),1,3); 2) 给非double型矩阵预分配内存 下面的语句用zeros函数预分配一个uint8型100*100的矩阵,首先,创建一个double型满秩矩阵,然后把矩阵转换为uint8型,这将导致不必要的时间和内存花费 A=int8(zeros(100)); 使用repmat函数,只需要创建一个double值,从而减少了对内存的需求 A=repmat(int8(0),100,100); 在不能进行预分配的时候,看是否能通过repmat函数使数组变大,用repmat函数扩展矩阵时,可以获得连续的内存块 1.4 其他方法 1) 用MEX文件编写循环代码 必须使用for循环时,把它写为MEX文件,因为不必在每次运行循环中的语句时都对他们进行解释 2) 操作实型数据 MATLAB特意为实数设计了一些函数,如reallog,realpow,realsqrt等 3) 函数比脚本运行更快 4) 使用load函数和save函数比Matlab文件I/O过程更好 5) 避免大型后台处理 2. 程序运行情况监测-Profiler Profiler是一个能够检测程序运行状况的工具,它告诉你M文件中哪些代码行最花费时间,哪些行被调用的次数最多,然后就可以利用上面的方法对这些代码进行改进。 其实也可以使用Profiler理解文件,对于很长不是自己创建的M文件,或者其他不熟悉的M文件,可以使用Profiler查看M文件是如何工作的,用详细报表查看隔行的实际调用情况。 3. 使用Profile函数 Profiler的运行是基于profile函数返回的结果的,但有一些profile函数具有的特点Profiler中并没有,具体查看help 4. 有效使用内存 1) 内存管理函数 使用下面这些函数,可以帮助在Matlab中管理内存 (1) whos函数:显示给工作空间中的变量分配了多少内存 (2) pack函数:把已经存在的变量保存到磁盘,然后重新存入,这将减少因为内存碎片出问题的机会 (3) clear函数:从内存中删除变量,增加可用内存的一种方法是周期性地把不再使用的变量从内存中清楚出去 (4) save函数:有选择地把变量保存到磁盘,使用大量数据时,这是一个有用的技巧 (5) load函数:重新载入数据文件 (6) quit函数:退出matlab并返回所有分配的内存到系统中 2) 节约内存的方法 本节介绍帮助你更节约内存,并避免出现“out of memory”的错误 (1) 使用变量 • 避免创建大型临时性变量,不再需要时清楚他们 • 使用固定大小的数

...展开详情
试读 8P 改善Matlab的运行效率的技巧
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
bqrmt 不错的方法,有实用性
2014-07-10
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
改善Matlab的运行效率的技巧 23积分/C币 立即下载
1/8
改善Matlab的运行效率的技巧第1页
改善Matlab的运行效率的技巧第2页

试读结束, 可继续读1页

23积分/C币 立即下载