《利用MATLAB实现信号DFT的计算.docx》由会员分享,可在线阅读,更多相关《利用MATLAB实现信号DFT的计算.docx(3页珍藏版)》请在三一办公上搜索。
1、利用MATLAB实现信号DFT的计算07级电信班 刘坤洋 24 实验一 利用MATLAB实现信号DFT的计算 一、实验目的: 1、熟悉利用MATLAB计算信号DFT的方法 2、掌握利用MATLAB实现由DFT计算线性卷积的方法 二、实验设备:电脑、matlab软件 三、实验内容: 1、练习用matlab中提供的内部函数用于计算DFT fft,fft,ifft,ifft的含义及用法 在进行DFT时选取合适的时域样本点数N 请举例,并编程实现 题目: 利用DFT分析x(t)=cos(4f1t)+cos(4f2t)的频谱f1=100Hz,f2=120Hz,fs=600Hz源程序: N=30; %数据
2、的长度 L=512; %DFT的点数 f1=100; f2=120; fs=600; %抽样频率 T=1/fs; %抽样间隔 ws=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) 结果图: 在对信号进行DFT时选择hamming窗增加频率分辨率 请举例,并编程实现 题目: 利用DFT分析x(t)=cos(4f
3、1t)+0.15cos(4f2t)的频谱f1=100Hz,f2=150Hz,fs=600Hz源程序: N=50; %数据的长度 L=512; %DFT的点数 f1=100;f2=150; fs=600; %抽样频率 T=1/fs; %抽样间隔 ws=2*pi*fs; t=(0:N-1)*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(频率/H
4、z) title(my picture) legend(N=50) 结果图: 2、增加DFT点数M以显示更多频谱细节 请举例,并编程实现 题目: xk=cos(4 rk/N), N=32, r=4利用MATLAB计算16点序列xk的512点DFT。 源程序: N = 32; k = 0:N-1; L = 0:511; x = cos(4*pi*k*4./N); 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计算线性卷积 请
5、举例,并编程实现 题目:利用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点DFT XE = fft(x,L); .HE = fft(h,L); % 由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); 结果图: