一.实验原理 1、经由正、逆离散时间傅里叶变换表达的信号傅里叶表示式是信号分析的一个关键部分。
X(ej)=
nx[n]eπjn(3.9)
1x[n]X(ej)ejnd(3.10) 2ππ类似地,当LTI系统用于滤波时,作为冲击响应离散时间傅里叶变换的频率响应,提供了LTI系统简介的描述。离散时间傅里叶变换X(ej)是的周期复值函数,周期总是
2π,并且基周期通常选在区间[-π,π)上。对离散时间傅里叶变换DTFT来说有两个问题:
(1)DTFT的定义对无限长信号是有效的。 (2)DTFT是连续变量的函数。
在MATLAB中,任何信号(向量)必须是有限长度的,仅此就是第一点成为问题。因此,不可能使用MATLAB计算无限长信号的DTFT。有一个值得注意的例外情形,当能从变换定义式推导出解析式并只是计算它时,可以使用MATLAB计算无限长信号的DTFT。
2、对于频率抽样问题。MATLAB擅长在有限网格点上计算DTFT。通常选择足够多的频率以使绘出的图平滑,逼近真实的DTFT。对计算有利的最好选择是在(-π,π)区间上一组均匀地隔开的频率,或者对共轭对称变换选择[0,π]区间。采用上述抽样办法,DTFT式变成X(ej)=X(ej2πk/N)x[n]ej(2πk/N)n,k0,1,2...N1
n0L1 DTFT的周期性意味着在-π≤<0区间上的数值是那些对k>N/2的数值。因为上市是在有限数量的频率点k=2πk/N处计算,并在有限范围内求和,因此它是可计算的。由于信号长度必须是有限的(0≤n 理解数值计算在离散时间傅里叶变换中的作用。 三.实验内容 1.脉冲信号的DTFT (1)要求:设矩形脉冲r[n]= 1 0≤n b.使用dtft函数计算12点脉冲信号的DTFT。绘出在区间-π≤<π上对的DTFT。把实 部和虚部分开绘出。另绘出DTFT的幅度。选择频率样本的数量是脉冲长度的5到10倍,以使绘出的图看上去平滑。用不同数量的频率样本做试验。 c.注意asinc函数零点的位置是规律分布的。对奇数长脉冲,比如L=15的脉冲重复进行DTFT计算并绘出幅度,同样再次检验零点位置,注意峰值高度。 d.对于asinc函数零点的间距与asinc函数的直流值,确定出通用规则。 (2)程序 M文件 function [H,W] = dtft(h,N) N=fix(N); L=length(h); h=h(:); if(N W(mid:N)=W(mid:N)-2*pi; W=fftshift(W); H=fftshift(fft(h,N)); %b nn=0:11; u=ones(1,12); [X,W]=dtft(u,72); subplot(221),plot(W,real(X));grid,title('REAL RESPONSE') xlabel('FREQUENCY W'),ylabel('REAL A') subplot(222),plot(W,imag(X)); grid,title('IMAGE RESPONSE') xlabel('FREQUENCY W'),ylabel('IMAGE A') subplot(223),plot(W,abs(X)); grid,title('MAGNITUDE RESPONSE') xlabel('FREQUENCY W'),ylabel('|H(w)|') subplot(224),plot(W,angle(X)); grid,title('PHASE RESPONSE') xlabel('FREQUENCY W'),ylabel('DEGREES') 运行结果 %c nn=0:14; u=ones(1,15); [X,W]=dtft(u,90); [Y,W]=dtft(X,90); subplot(111),plot(W,abs(Y)); grid,title('MAGNITUDE RESPONSE') xlabel('FREQUENCY W'),ylabel('|H(w)|') 运行结果 %d 如图L=12时由R(e^jw)=0得sin(wL/2)=0 即wL/2=k*pi 则w=k*pi/36 所以零点间距为pi/6 直流值:12 零点间距*直流值=(pi/6)*12=2*pi (3)结果分析 使用dtft函数可以快速准确的计算出脉冲信号的DTFT,频率样本的数量越大时,绘出的图形越平滑。 2.asinc的M文件 (1)内容 编写一个MATLAB的函数如asinc(,L) ,直接从(3.14)式计算在频率格上的asinc(ω,L)。该函数应有两个输入:长度L和频率ω的向量。函数必须检查被零清除的情形,如ω=0时。 直接计算混叠sinc函数(3.13)式得到的脉冲信号的DTFT。绘出幅度。保存该图以便将其与用dtft得到的结果进行比较。 (2)程序 %asinc函数 function y=asinc(w,L) N=length(w); for i=1:N if w(i)==0 y(i)=L; else y(i)=sin(1/2*w(i)*L)/sin(1/2*w(i)); end end L=12; N=84; W=(2*pi/N)*[0:(N-1)]'; W=W-pi; H=asinc(W,L); figure(3) plot(W,abs(H)); grid,title('MAGNITUDE RESPONSE'); xlabel('NORMALIZED FREQUENCY'),ylabel('|H(W)|') 运行结果 3.无限长信号的DTFT 通常不可能计算一个无限长信号的DTFT,但指数信号h[n]au[n]计算比较容易。 当|a|<1, 有 利用freqz函数可以计算上式: 与dtft类似,freqz有两个输出:交换数值(HH)和频率格点(WW),第四个输入参数 是可以选择的,但如将其设定为’whole’,则输出向量WW指定频率格点的范围是从0到2。如果省略第四个参数,频率格点由区间上等间距的N个点组成。 4.指数信号 (1)内容: n对于信号x[n]=0.9u[n],使用freqz函数计算其DTFTX(e)。 jnA.对在区间-π≤<π上绘出幅度与相位特性。这需要从freqz返回的[X,W]向量的移位。解释为什么幅度特性是的偶函数,而相位特性是的奇函数。 B.推算一阶系统的幅度特性与相位特性的表示式。 C.直接以这些表达式来计算幅度特性与相位特性,并与用freqz函数计算出得结果相对比。 (2)程序 %a N=1000; a=[1,-0.9]; b=1; [X,W]=freqz(b,a,N); W=[-pi:0.1:pi]; X=freqz(b,a,W); subplot(211),plot(W,abs(X)); grid,title('MAGNITUDE RESPONSE') xlabel('FREQUENCY W'),ylabel('|X(w)|') subplot(212),plot(W,angle(X)); grid,title('PHASE RESPONSE') xlabel('FREQUENCY W'),ylabel('DEGREES') 运行结果 b 假设一阶差分方程:y[n]=x[n]+ay[n-1],其系统方程H(ej)= 1其幅度 1-aejH(ej)11a2-2acos,相位H(e)arctan[jasin] 1acos%c w=-pi:0.1:pi; x=1./(1-exp(-j.*w)); subplot(211),plot(w,abs(x)); grid,title('MAGNITUDE RESPONSE') xlabel('FREQUENCY W'),ylabel('|H(w)|') subplot(212),plot(w,angle(x)); grid,title('PHASE RESPONSE') xlabel('FREQUENCY W'),ylabel('DEGREES') (3)结果分析 用数学表达式计算与用freqz计算结果相同,误差较小。 因篇幅问题不能全部显示,请点此查看更多更全内容