下载此文档

matlab效率提升独孤九剑(附fft优化的详细例子).doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
matlab效率提升独孤九剑作者:信科@滨matlab效率提升葵花宝典        5附录:自编fft函数的优化详解  6参考资料:  ,无非在两个方面:天生的和后天的。第一个方面是算法本身的复杂度。比如插入排序复杂度为O(N2),而快速排序算法是O(NlnN),当然在大数据量时快速排序就比插入排序快很多了,这就是算法天生的优越性。所以世界并不是决定公平的啊,有的人就可以成为快速排序,而其他人只能成为插入排序,呵呵。第二个方面是算法具体实现的问题。实现算法的方式不同,写程序的人不同,使用的语言不同,优化方式的不同,是否多线程,是否并行,都会使得同一算法的不同实现时间相差十倍以上,我们称之为后天的。所以当起跑线差不多时,就看谁更拼命了,所以最终有人就是冠军而有的就只能千年老二。这也是造成社会不公平的原因。有时候就算有的高手实现插入排序都比菜鸟写的快速排序快上不少,我们可以称之为“屌丝的逆袭”,屌丝不遗憾,就看有没有一颗拼搏的心了。而这篇文章详细介绍第二方面的算法具体实现的效率问题。这是我这三年来编写matlab程序的一些经验和教训的总结,外加网上各路人马的观点,由于写测试例子太费时费力,不重要的就不写了。:观点传统现代向量化编程,避免使用循环YESNO多使用MATLAB的内置函数YESYES能用逻辑索引解决的就不用数值索引YESYES变量预分配YESYES尽量不用Cell型数组YES?矩阵含有大量0元素,采用稀疏矩阵YESYESinplaceoperationN0YES列向量存储YESYES   对向量化:由于matlab2007之后的JIT和加速器技术,使得for和向量化的差别不明显了。注意向量化可能会占用大量的内存,有时候for循环更好读。逻辑索引:采用逻辑索引比数值索引(find)快30%左右。cell:我一般用结构体代替,但是有时候用cell更方便,需要看情况而定,可能cell更方便,直观,程序可读性更好。一般瓶颈也不在这儿值得商榷。预分配:比如后面的循环要用到一个1000的数组,先预分配x=zeros(1,1000);稀疏矩阵:稀疏矩阵一般有专门的稀疏算法,可能效率更高,更省内存。由于平时没怎么用过,不发表意见。刚才看到一个减少变量赋值的次数的技术:inplaceoperation:就是如果输入参数要返回的话,就让输出参数和输入参数同名,减少赋值次数。举个例子:functiony=f1(x)y=x+1;end我们可以改写成functionx=f2(x)x=x+1;end经过测试发现f2比f1快了110%,很是明显。使用mex文件:用其他语言来实现需要的功能,避开matlab的瓶颈。用乘法代替除法进行向量运算:b=a/;改成b=a*(1/);经过测试速度快了三倍!神奇啊!这也是我无意之中发现的,看来乘法跟除法还是差别大啊。尽量用列向量进行操作:因为matlab的矩阵是按列存放的,对其进行存取的速度比行的方式要快20%。:,便于找到程序的错误和疏忽的地方。,找出性能瓶颈,其实很多时候上面提到的注意事项并不是最花时间的,有时候就一两句话就花了差不多80%的时间,注意2/8原则。附录:自编fft函数的优化详解下面我以这两天我写的fft快速傅里叶变换作为上述优化方法的应用。我是参考北京大学张平文写的《数值分析》中的算法来实现的。x=FFT(t),这儿就无意之中用到了inplaceoperation技术,呵呵。大概流程:,:fft也可以采用递归的方式进行求解,但是速度跟迭代的方式没法比,而且内存占用高。第一步:重新排列x的顺序的具体实现function[order]=t,n)%得到次序order=zeros(t);order(1:2)=[t/2+1];t/2;num=1;fori=1:n-1num=num*2;i_2=i_2/2;order(num+1:num*2)=order(1:num)+i_2;endend评注:此处我用了预分配技术,向量化操作。这个没啥好说的,而且时间也不是花在这儿。不过我感觉我的这种实现方法很是精妙,哈哈。第二步:=wn(t)w=t/2,n);i_2=1;fori=2:n%2^ii_2=i_2*2;ww=exp(-(pi/i_2)*1j);w(i,2:i_2)=ww.^(1:i_2-1);%这种实现方式效率较低,没有利用特殊性endend由于第三步需要进行一个

matlab效率提升独孤九剑(附fft优化的详细例子) 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小33 KB
  • 时间2019-11-16