十一、按频率抽取基2-FFT原理及实现.docVIP

  • 30
  • 0
  • 约1.96千字
  • 约 7页
  • 2020-06-30 发布于河北
  • 举报
实验题目 按频率抽取基2-FFT原理及实现  实验时间   实验台号   实验目的 基2-FFT按时间抽取的程序实现; 运算量的核算; 实验仪器 PC台式机,软件MATLAB 实验预习 实验预习: 1、DFT及其性质; 2、FFT算法原理;  实验原理: 1、DFT: 2、一些性质: 共轭性: 可约性: 周期性: 3、算法原理: 4、算法流程图: 实验步骤 应用函数for(); 题目11-1: 一、根据原理图编写DIF-FFT算法程序? 解:对应MATLAB代码为: function Xk=diffft(xn) M=nextpow2(length(xn)); N=2^M; %N=length(xn); A=[xn,zeros(1,N-length(xn))]; %A=xn; v=floor(log2(N)); WN=exp(-j*2*pi/N); for m=1:v for k=0:2^(v-m+1):N-1 for K=0:2^(v-m)-1 p=k+K; q=p+2^(v-m); r=2^(m-1)*mod(p,2^(v-m+1)); B(p+1)=A(p+1)+A(q+1); B(q+1)=(A(p+1)-A(q+1))*WN^r; end end A=B; disp(A); end NI=N/2; for I=1:N-1 if INI t=A(I+1); A(I+1)=A(NI+1); A(NI+1)=t; end T=N/2; while NI=T NI=NI-T; T=T/2; end NI=NI+T; end disp(X[k]:); disp(A); 题目11-2: 二、对序列进行DFT变换时,比较直接计算法计算DFT和DIT-FTT算法和DIF-FFT计算DFT时间的差异?(需要先定义第十次实验DIT-FFT,第八次实验DFTmat和DFTfor函数) Nmax=256; ditfft_time=zeros(1,Nmax); for n=1:Nmax x=rand(1,n); t=clock; ditfft(x); ditfft_time(n)=etime(clock,t); end k=1:Nmax; diffft_time=zeros(1,Nmax); for n=1:Nmax x=rand(1,n); t=clock; diffft(x); diffft_time(n)=etime(clock,t); end figure(1); subplot(2,1,1);plot(k,ditfft_time,--); ylabel(t/s);title(DIT-FFT执行时间); subplot(2,1,2);plot(k,diffft_time,--); ylabel(t/s);title(DIF-FFT执行时间); %结果11-1 DFTfor_time=zeros(1,Nmax); for n=1:Nmax x=rand(1,n); t=clock; DFTfor(x); DFTfor_time(n)=etime(clock,t); end figure(2); subplot(2,1,1);plot(k,DFTfor_time,--); ylabel(t/s);title(DFTfor执行时间); DFTmat_time=zeros(1,Nmax); for n=1:Nmax x=rand(1,n); t=clock; DFTmat(x); DFTmat_time(n)=etime(clock,t); end subplot(2,1,2);plot(k,DFTmat_time,--); xlabel(n);ylabel(t/s);title(DFTmat执行时间);%结果11-2 实验数据结果及分析 11-1 11-2 结果分析:1、从图像中可以看出DIF-FFT和DIT-FFT计算时间相同,比直接计算DFT消耗时间短。直接计算DFT中DFTmat矩阵法要比DFTfor循环法耗时短。 思考题 教师评语     成绩:   日期:  

文档评论(0)

1亿VIP精品文档

相关文档