欢迎来到天天文库
浏览记录
ID:37179336
大小:49.50 KB
页数:3页
时间:2019-05-21
《《(fft和dft)matlab源代码》》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、对于正弦序列进行16点dft和fft变换:k=16;n1=[0:1:15];%取点xa1=sin(2*pi*n1/k);%写入输入函数subplot(2,2,1)%输出输入函数plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=dft(xa1);%对xa1做dft变换xk1=abs(xk1);%对xa1做dft变换去绝对值subplot(2,2,2)%输出dft变换后的结果stem(n1,xk1)xlabel('k');ylabel('X(k)');k=16;n1=[0:1:15];%取点xa1=sin(2*pi*n1/k);%写入输入函数subpl
2、ot(2,2,1)%输出输入函数plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=fft(xa1);%对xa1做dft变换xk1=abs(xk1);%对xa1做dft变换去绝对值subplot(2,2,2)%输出dft变换后的结果stem(n1,xk1)xlabel('k');ylabel('X(k)');Dft变换fft变换fft变换过程:functiony=myfft(xr,n)p=0:n-1;%开始倒位序nu=log2(n);p1=p;b=zeros(1,n);fort=1:nu;p2=floor(p1/2);b=b*2+(p1-2*p2);
3、p1=p2;end;yr(p+1)=xr(b+1);xr=yr;%倒位序结束t=0:n/2-1;%计算因子w开始(只计算forv=0:n/2-1;w=exp(-2*i*pi*t/n);end;%计算因子w结束form=1:nu;%计算x(k)开始h=2^(m-1);k=1;while(k4、k=k+1;end;end;xr=xch;end;%计算x(k)结束y=xr%输出变换后的结果dft和fft时间对比:dft_time=zeros(1,100);forn=1:100%取1到100点的dftt=clock;a=sin(n)+cos(n);DFTmatlab(a,n);%做不同抽样点的dftdft_time(n)=etime(clock,t);%计算不同点数运行的时间end;n=1:100;subplot(1,2,1);%将绘图显示在指定位置plot(n,dft_time,'.');%以”.”作时间大小的标记xlabel('N');ylabel('时间(单位:秒)');%制5、定横纵坐标的显示内容title('DFT执行时间');%绘图的标题fft_time=zeros(1,100);forn=1:1:100t=clock;a1=sin(n)+cos(n);FFTmatlab(a1);fft_time(n)=etime(clock,t);endn=1:100;subplot(1,2,2);plot(n,fft_time,'.');xlabel('N');ylabel('时间(单位:秒)')title('FFT执行时间')
4、k=k+1;end;end;xr=xch;end;%计算x(k)结束y=xr%输出变换后的结果dft和fft时间对比:dft_time=zeros(1,100);forn=1:100%取1到100点的dftt=clock;a=sin(n)+cos(n);DFTmatlab(a,n);%做不同抽样点的dftdft_time(n)=etime(clock,t);%计算不同点数运行的时间end;n=1:100;subplot(1,2,1);%将绘图显示在指定位置plot(n,dft_time,'.');%以”.”作时间大小的标记xlabel('N');ylabel('时间(单位:秒)');%制
5、定横纵坐标的显示内容title('DFT执行时间');%绘图的标题fft_time=zeros(1,100);forn=1:1:100t=clock;a1=sin(n)+cos(n);FFTmatlab(a1);fft_time(n)=etime(clock,t);endn=1:100;subplot(1,2,2);plot(n,fft_time,'.');xlabel('N');ylabel('时间(单位:秒)')title('FFT执行时间')
此文档下载收益归作者所有