1、数字信号处理实验五实 验 报 告实验名称_利用DFT分析离散信号频谱课程名称_数字信号处理_院 系 部:电气与电子工程 专业班级:信息1002学生姓名:王萌 学 号: 11012000219同 组 人: 实验台号:指导教师:范杰清 成 绩: 实验日期:华北电力大学一、实验目的 应用离散傅里叶变换(DFT),分析离散信号xk的频谱。深刻理解DFT分析离散信号频谱的原理,掌握改善分析过程中产生的误差的方法。二、实验原理 根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)与四种确定信号傅里叶变换的之间的关系,实现由DFT分析其频谱。Matlab中提供了ff
2、t函数,FFT是DFT的快速算法X=fft(x):用于计算序列x的离散傅里叶变换(DFT)X=fft(x,n):对序列x补零或截短至n点的离散傅里叶变换。 当x的长度小于n时,在x的尾部补零使x的长度达到n点; 当x的长度大于n时,将x截短使x的长度成n点;x=ifft(X)和x=ifft(X,n)是相应的离散傅里叶反变换。fftshift(x)将fft计算输出的零频移到输出的中心位置。利用DFT计算离散周期信号 的频谱分析步骤为:(1) 确定离散周期序列 的基本周期N;(2) 利用fft函数求其一个周期的DFT,得到Xm;(3) 。利用DFT计算离散非周期信号xk 的频谱 分析步骤为:(1)
3、 确定序列的长度M及窗函数的类型。当序列为无限长时,需要根据能量分布,进行截短。(2) 确定作FFT的点数N;根据频域取样定理.为使时域波形 不产生混叠,必须取 。(3) 使用fft函数作N点FFT计算Xm。三、实验内容1、利用FFT分析信号 的频谱;(1) 确定DFT计算的参数;(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差 原因及改善方法。解答:%该周期序列的周期N=32,基频W0=p/8。N=32; k=0:N-1;x=cos(pi*3/8*k);X=fft(x,N); subplot(2,1,1);stem(k-N/2,abs(fftshift(X);ylabel(Magn
4、itude); xlabel(Frequency (rad);subplot(2,1,2);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);改善方法:应该多抽取些2. 利用FFT分析信号 的频谱; (1) 确定DFT计算的参数; (2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差 原因及改善方法。解答:k=0:30; x=0.5.k;subplot(2,1,1);stem(k,x); %画出序列的时域波形subplot(2,1,2);w=k-15; plot(w, abs(fftshift(fft(x
5、); %画出序列频谱的幅度谱改善:多抽取些3. 有限长脉冲序列 ,利用FFT分析其频谱,并绘出其幅度谱与相位谱。解答:N=6; k=0:N-1;x=2,3,3,1,0,5;X=fft(x,N); subplot(2,1,1);stem(k-N/2,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);title(MagnitudeFrequency N=6 );subplot(2,1,2);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad); titl
6、e(PhaseFrequency );4. 某周期序列由3个频率组成: ,利用FFT分析其频谱。如何选取FFT的点数N?此3个频率分别对应FFT计算结果Xm中的哪些点?若选取的N不合适,FFT计算出的频谱Xm会出现什么情况?解答:%该周期序列的周期N=32,N=64,基频W0=p/16。N=32; k=0:N-1;x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k);X=fft(x,N); subplot(4,1,1);stem(k-N/2,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad)
7、;title(MagnitudeFrequency N=32 );subplot(4,1,2);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);title(PhaseFrequency N=32);N=64; k=0:N-1;x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k);X=fft(x,N); subplot(4,1,3);stem(k-N/2,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);t
8、itle(MagnitudeFrequency N=64 );subplot(4,1,4);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);title(PhaseFrequency N=64);若N选取不合适,则无法区分频率5. 某离散序列 ,利用FFT分析其频谱。(1) 对xk做64点FFT,绘出信号频谱,能分辨出其中的两个频率吗?(2) 对xk补零到256点后计算FFT,能分辨出其中的两个频率吗?(3) 选用非矩形窗计算FFT,能够分辨出其中的两个频率吗?(4) 若不能够很好地分辨出其中的两个频谱,应采取
9、哪些措施?解答:(1)、该周期序列的周期N=64,基频W0=p/15 N=64; k=0:N-1;x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k);X=fft(x,N); subplot(2,1,1);stem(k-N/2,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);title(MagnitudeFrequency N=64 );subplot(2,1,2);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);ti
10、tle(PhaseFrequency N=64);(2)对xk补零到256点后计算FFT N=256; k=0:N-1;x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k);X=fft(x,N); subplot(2,1,1);stem(k-N/2,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);title(MagnitudeFrequency N=256);subplot(2,1,2);stem(k-N/2,angle(fftshift(X);ylabel(Phase); xlabel(Frequen
11、cy (rad);title(PhaseFrequency N=256);(3)Hanning:N=64; k=0:N-1;w=1/2*(1-cos(2*pi*k/(N-1);x=cos(2*pi/15*k).*w+0.75*cos(2.3*pi/15*k).*w;X=fft(x,N); subplot(2,1,1);stem(k,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);stem(k,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (ra
12、d);Blackman:N=64; k=0:N-1;w=0.42-0.5*cos(2*pi*k/(N-1)+0.08*cos(4*pi*k/(N-1);x=cos(2*pi/15*k).*w+0.75*cos(2.3*pi/15*k).*w;X=fft(x,N); subplot(2,1,1);stem(k,abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);stem(k,angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);6. 已知序列利用
13、FFT分析下列信号的幅频特性,频率范围为 ,N=500点。(1);(2);(3) 若将上述xk乘以cos(pk/2) ,重做(1)和(2)。解答:(1)% N=500; K=-50:2:50;w=-(0.1*K).2/2;x=exp(w);X=fft(x,N); subplot(2,1,1);stem(abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);stem(angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad)%N=500; K=-50:4
14、:50;w=-(0.1*K).2/2;x=exp(w);X=fft(x,N); subplot(2,1,1);stem(abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);stem(angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);(2) 将上述xk乘以cos(pk/2)%N=500; K=-50:2:50;w=-(0.1*K).2/2;x=exp(w).*cos(pi*K/2);X=fft(x,N); subplot(2,1,1);ste
15、m(abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);stem(angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);%N=500; K=-50:4:50;w=-(0.1*K).2/2;x=exp(w).*cos(pi*K/2);X=fft(x,N); subplot(2,1,1);stem(abs(fftshift(X);ylabel(Magnitude); xlabel(Frequency (rad);subplot(2,1,2);ste
16、m(angle(fftshift(X);ylabel(Phase); xlabel(Frequency (rad);4、实验思考题1. 既然可直接由DTFT定义计算序列DTFT,为何利用DFT分析序列的频谱?答:DFT用于分析有限长序列更方便2. 若序列持续时间无限长,且无解析表达式,如何利用DFT分析其频谱?答:利用窗函数3. 在利用DFT分析离散信号频谱时,会出现哪些误差?如何克服或改善?答:频率分不出,应该多抽取些4. 在利用DFT分析离散信号频谱时,如何选择窗函数?答:根据窗函数的不同特性5. 序列补零和增加序列长度都可以提高频谱分辨率吗? 两者有何本质区别?答:可以。补零是DFT中经常采用的方法,补零只能使序列的频谱变得细致,但不能提高序列的频率分辨率,只有采集更多的有效数据,才能得到序列的高分辨率频谱。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1