《利用MATLAB实现信号DFT的计算.doc》由会员分享,可在线阅读,更多相关《利用MATLAB实现信号DFT的计算.doc(6页珍藏版)》请在三一文库上搜索。
1、07级电信(2)班 刘坤洋 24实验一 利用MATLAB实现信号DFT的计算 一、实验目的:1、熟悉利用MATLAB计算信号DFT的方法2、掌握利用MATLAB实现由DFT计算线性卷积的方法二、实验设备:电脑、matlab软件三、实验内容:1、 练习用matlab中提供的内部函数用于计算DFT(1) fft(x),fft(x,N),ifft(x),ifft(x,N)的含义及用法(2) 在进行DFT时选取合适的时域样本点数N请举例,并编程实现题目:源程序: N=30; %数据的长度L=512; %DFT的点数f1=100; f2=120;fs=600; %抽样频率T=1/fs; %抽样间隔ws=
2、2*pi*fs;t=(0:N-1)*T;f=cos(4*pi*f1*t)+cos(4*pi*f2*t);F=fftshift(fft(f,L);w=(-ws/2+(0:L-1)*ws/L)/(2*pi);hd=plot(w,abs(F);ylabel(幅度谱) xlabel(频率/Hz) title(my picture)结果图:(3) 在对信号进行DFT时选择hamming窗增加频率分辨率请举例,并编程实现题目:源程序: N=50; %数据的长度L=512; %DFT的点数f1=100;f2=150;fs=600; %抽样频率T=1/fs; %抽样间隔ws=2*pi*fs; t=(0:N-1
3、)*T;f=cos(4*pi*f1*t)+0.15*cos(4*pi*f2*t);wh=(hamming(N);f=f.*wh;F=fftshift(fft(f,L);w=(-ws/2+(0:L-1)*ws/L)/(2*pi);plot(w,abs(F);ylabel(幅度谱) xlabel(频率/Hz) title(my picture) legend(N=50)结果图:2、增加DFT点数M以显示更多频谱细节请举例,并编程实现题目:利用MATLAB计算16点序列xk的512点DFT。源程序: N = 32; k = 0:N-1; L = 0:511; x = cos(4*pi*k*4./N)
4、; X = fft(x);plot(k/N,abs(X),o); hold on XE = fft(x,512);plot(L/512,abs(XE) ; legend(N=32)结果图:3、 利用MATLAB实现由DFT计算线性卷积请举例,并编程实现题目:利用MATLAB由DFT计算xk* hk。xk=1, 2, 1, 1, hk=2, 2, 1, 1源程序:% 利用DFT计算线性卷积 x = 1 2 1 1;h = 2 2 1 1; % 确定卷积结果的长度L = length(x)+length(h)-1;% 计算序列的L点DFTXE = fft(x,L);.HE = fft(h,L);
5、% 由IDFT计算卷积结果y1 = ifft(XE.*HE); %绘制卷积结果及误差图 k=0:L-1; subplot(1,2,1); stem(k,real(y1);axis(0 6 0 7); title(Result of linear Convolution); xlabel(Time index k);ylabel(Amplitude); y2=conv(x,h);error=y1-y2; subplot(1,2,2);stem(k,abs(error); xlabel(Time index k);ylabel(Amplitude); title(Error Magnitude);结果图: (注:可编辑下载,若有不当之处,请指正,谢谢!)