下载此文档

撰写快速的 MATLAB 程序代码.doc


文档分类:IT计算机 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
撰写快速的MATLAB程序代码MATLAB程序语言是剖析式(parsed)的,原始码是实时直译的。像C++和Fortran的程序语言比较快,因为它们在变成计算机原生(native)语言前先被编译。实时剖析的优点是较与平台不相关、具强固性(robustness)和更容易除错。缺点是在速度上会变慢,负荷会变多,及受限的低阶控制。要弥补速度上的损失,MATLAB提供了能帮助加速的程序代码。此文章讨论这些和其它的策略来改善MATLAB原始码的速度。*数组预先配置*向量化的计算和逻辑*向量化的参考(Vectorizedreferencing)<h2>警告!</h2>*先学习程序语言:最佳化(不仅是MATLAB)需要熟悉程序语言的语法和函式。本文并不是MATLAB的教学。*使用批注:最佳化的程序代码是精练和神秘的。为了帮助他人和你自己,记得要加批注。*不要在它需要被最佳化程序代码之前最佳化它:在最佳化程序代码之前,考虑它是否值得这些心力。如果程序代码很快就会被修改或扩充,无论如何它会被重写。*只要最佳化必要的部份:确定程序确实是速度的瓶颈。如果它不是,最佳化只会把程序代码变得难以理解。<h2>(TheProfiler)</h2>,它帮助你决定程序里哪里是瓶颈。考虑下面的程序:functionresult=example1(Count)fork=1:Countresult(k)=sin(k/50);ifresult(k)<-(k)=gammaln(k);endend要分析程序的效率,首先启动profiler,并清除任何旧的profiler数据:>>profileon>>profileclear现在执行程序吧。将输入的自变量变得大些或小些,让它跑个几秒。>>example1(5000);然后输入>>profreport(’example1’)profiler会在函式上产生一个HTML报表,然后开启一个浏览器窗口。根据系统,profiler的结果可能会与此例有些不同。在蓝色的「example1」连结上按一下会提供更多的细节:显示了最花时间的行数,伴随着时间、时间的百分比和行数。代价最高的行数是第4和第7行。<h2></h2>MATLAB的矩阵变量有动态的自变量行和列的能力。例如:>>a=2a=2>>a(2,6)=1a=200000000001MATLAB会自动地改变矩阵的尺寸大小。在内部,矩阵数据存储器必须被预先配置予较大的尺寸。如果矩阵可重复地改变大小--像是在for循环里--此负荷会变得很显著。要避免经常性的重新配置,用zero命令来「预先配置」矩阵。思考下列的程序代码:a(1)=1;b(1)=0;fork=2:8000a(k)=*a(k-1)-*b(k-1);b(k)=*a(k-1)+*b(k-1);。在执行for循环之后,二个数组都是长度8000的列向量,因此要预先配置,建立8000个元素的空的a和b列向量。a=zeros(1,8000);%预先配置b=zeros(1,8000);a(1)=1;b(1)=0;fork=2:8000a(k)=*a(k-1)-*b(k-1);b(k)=*a(k-1)+*b(k-1);end经此修改,(快超过三倍)。预先配置通常很容易,在本例中它只需要决定正确的预先配置大小及新增二行。如果最终的数组尺寸大小会变动那么会怎么样?一个可能的方法,是在循环执行完之后使用数组尺寸大小的上界(upperbound),并且裁剪掉超出的部份:a=zeros(1,10000);%预先配置count=0;fork=1:10000v=exp(rand(1)*rand(1));ifv>%conditionallyaddtoarraycount=count+1;a(count)=v;endenda=a(1:count);%(没有预先配置),(有预先配置)。巢状数组(cellarray)也能被预先配置,使用cell命令来建立想要的尺寸大小。对常常变化大小的巢状数组预先配置内存,甚至比对双精度数组更有效益。<h2>(Vectorization)</h2>要「向量化」一个计算代表说要用向量运算取代平行运算。此策略通常增进十倍的速度。好的向量化是一种必须被发展的技巧,它需要熟悉MATLAB程序语言和有创造力。<h3></h3>许多标准的MATLAB函

撰写快速的 MATLAB 程序代码 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-01-23