MAGNITUDE RESPONSE
NORMALIZED FREQUENCY
|H (w )|
D E G R E E S
PHASE RESPONSE
实验原理
对离散时间傅里叶变换DTFT 来说有两个问题:(1)DTFT 的定义对无限长信号时有效的;(2)DTFT 是连续变量w 的函数。
在MATLAB 中,任何信号必须是有长度的,使(1)成为问题,当能从变换定义式推导出解析式并只是计算它,可以使用MATLAB 计算无限长信号的DTFT 。对于频率抽样问题,通常在有限网格点上选择足够多的频率一试绘出逼近真实的DTFT 。最好的选择是在(-pi ,pi )区间上一组均匀隔开的频率,如式3.11所示。在数量有限的频率点wk=2*pi*k/N 出计算,并在有限范围内求和。要求N>=L 。MATLAB 的freqz 函数足以应对无限长信号,但计算有限长信号的DTFT 需用一个新的函数,dtft 函数。
对于无限长信号中的指数信号,其DTFT 是exp(j*w)的有理函数。可以推导出|a|<1时h[n]=a^n*u[n]的DTFT 表达式H(exp(j*w))=1/(1-a*exp(-j*w)),使用这一有理式容易计
算这个DTFT 的一组样本,分子和分母的计算都可以使用FFT ,即计算有理式等同于做两个dtft 函数计算,定义freqz 函数[HH,WW]=freqz(b,a,N,'whole')。
建立dtft 函数如下所示:
function [ H,W ] = dtft( h,N )
%UNTITLED2 Summary of this function goes here % Detailed explanation goes here N=fix(N);
L=length(h); h=h(:); if (Nerror('DTFT:#data samples cannot exceed # freq samples ') end
W=(2*pi/N)*[0:(N-1)]'; mid=ceil(N/2)+1; W(mid:N)=W(mid:N)-2*pi; W=fftshift(W); H=fftshift(fft(h,N));
在变换域上使用subplot 绘制双子图,程序如下:
>> format compact,subplot(111) >> a=0.88*exp(sqrt(-1)*2*pi/5); >> nn=0:40; xn=a.^nn; >> [X,W]=dtft(xn,128);
>> subplot(211),plot(W/2/pi,abs(X)); >> grid,title('MAGNITUDE RESPONSE')
>> xlabel('NORMALIZED FREQUENCY'),ylabel('|H(w)|')