FFT算法MATLAB实现与测试
2013-03-10 14:31
253 查看
以前从没手动实现过FFT算法,实现了一下.
参考<computational frameworks for the fast fourier transform>
![](http://img.my.csdn.net/uploads/201303/10/1362897095_8717.png)
![](http://img.my.csdn.net/uploads/201303/10/1362897123_4200.png)
![](http://img.my.csdn.net/uploads/201303/10/1362897145_7055.png)
参考<computational frameworks for the fast fourier transform>
![](http://img.my.csdn.net/uploads/201303/10/1362897095_8717.png)
![](http://img.my.csdn.net/uploads/201303/10/1362897123_4200.png)
![](http://img.my.csdn.net/uploads/201303/10/1362897145_7055.png)
% 2012.3.10 function test clear; clc; close all; nFFT=2^10; N=nFFT; t=linspace(0,1,N)'; fs=N; x=sin(2*pi*300*t); freq=fs*((1:nFFT)-1)/nFFT; % bug fixed 1:nFFT figure; disp('time[Matlab fft]:'); tic y0=fft(x,nFFT); toc plot(freq,abs(y0)); title('fft'); disp('time[recursive]:'); tic y=my_fft(x,nFFT); toc figure; plot(freq,abs(y)); title('my-fft'); figure(3); plot(freq, abs(y-y0)); title('my-fft-error'); disp('time[inplace]:'); tic y_inplace=my_ffy_inplace(x,nFFT); toc figure(4); plot(freq,abs(y_inplace-y0)); title('inplace-error'); figure(5); plot(freq,abs(y_inplace)); function x=my_ffy_inplace(x,n) J=zeros(n,1); for k=1:n J(k)=bit_reverse(n,k-1); end J=J+1; % 1-base x=x(J); t=log2(n); for q=1:t L=2^q; r=n/L; L_2=L/2; for j=0:L_2-1 w=cos(2*pi*j/L)-1i*sin(2*pi*j/L); for k=0:r-1 tau=w*x((k)*L+j+1+L_2); x((k)*L+j+1+L_2)=x((k)*L+j+1)-tau; x((k)*L+j+1)= x((k)*L+j+1)+tau; end end end end function j=bit_reverse(n,k) % 0-base index t=log2(n); j=0; for q=1:t s=floor(k/2); b_q=k-2*s; % horner j=2*j+b_q; k=s; end end function y=my_fft(x,n) if(n==1) y=x; else m=n/2; w=exp(-2*pi*1i/n); Omega=zeros(m,m); for j=1:m Omega(j,j)=w^(j-1); end Zr=my_fft(x(1:2:n),m); Zb=Omega*my_fft(x(2:2:n),m); Im=eye(m); y=[Im, Im; Im,-Im]*[Zr;Zb]; end end end
相关文章推荐
- python 测试实现方法
- DIY_DE2之DM9000A网卡调试系列例程(二)——DM9000A测试、自收发、实现UDP
- java实现发送邮件可多个附件内嵌图片-commons-email使用(未测试)
- iOS_详解iPhone应用自动化测试案例实现
- 反转指向字符串反转C++实现源码(带测试用例)
- LR实现http协议性能测试脚本
- java操作redis(三):实现一个redis连接池并附测试
- java简单实现测试程序执行时间及日期转换字符串
- 无聊测试下php5多重继DEMO简单实现方法
- Dubbo服务性能测试环境批量部署实现方案
- Ubuntu中为Android系统实现内置Java应用程序测试Application Frameworks层的硬件服务
- Jmeter简单实现登录测试
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- JAVA简单自定义类实现与测试
- OpenCV实现USM锐化与测试
- badboy+jmeter 实现压力测试
- 【未测试】采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
- A/B 测试的基本概念举例理解以及具体实现方法【传统A/B测试基于后端的 A/B 测试(Back-end AB test),现在基本上基于前端js在客户端进行分流,有更多优点,请看里面】
- Dijkstra算法 java实现(含测试)