-1-目录实验1离散时间信号的频域分析-----------------------2实验2FFT算法与应用-------------------------------7实验3IIR数字滤波器的设计------------------------12实验4FIR数字滤波器的设计------------------------17-2-实验1离散时间信号的频域分析一.实验目的信号的频域分析是信号处理中一种有效的工具。在离散信号的时域分析中,通常将信号表示成单位采样序列(n)的线性组合,而在频域中,将信号表示成复变量enj或enNj2的线性组合。通过这样的表示,可以将时域的离散序列映射到频域以便于进一步的处理。在本实验中,将学习利用MATLAB计算离散时间信号的DTFT和DFT,并加深对其相互关系的理解。二、实验原理(1)DTFT和DFT的定义及其相互关系。序列x(n)DTFT定义为()jwXe=()nxnejn它是关于自变量的复函数,且是以2为周期的连续函数。()jwXe可以表示为()()()jwjwjwreimXeXejXe,其中,()jwreXe和()jwimXe分别是()jwXe实部和虚部;还可以表示为()jwXe=()|()|jwjwXee,其中,|()|jwXe和()arg()jwXe分别是()jwXe的幅度函数和相位函数;它们都是的实函数,也是以2为周期的周期函数。序列()xn的N点DFT定义为221100()()()()NNjkjknknNNNNnXkXexnexnW,()Xk是周期为N的序列。()jXe与()Xk的关系:()Xk是对()jXe)在一个周期中的谱的等间隔N点采样,即2k|()()|jwwNXkXe,而()jXe可以通过对()Xk内插获得,即-3-1(2/)(1)/202)sin(12()()2sin()2NjkNNjwkNkXeXkeNkNN(2)使用到的MATLAB命令有基于DTFT离散时间信号分析函数以及求解序列的DFT函数。1)基于DTFT离散时间信号分析函数有:freqz,real,imag,abs,angle。函数freqz可以用来计算一个以ej的有理分式形式给出的序列的DTFT值。freqz的形式多样,常见的有H=freqz(num,den,w),其中num表示序列有理分式DTFT的分子多项式系数,den表示分母多项式系数(均按z的降幂排列),矢量w表示在0~2中给定的一系列频率点集合。freqz函数的其他形式参见帮助文件。在求出DTFT值后,可以使用函数real,imag,abs和angle分别求出并绘出起实部、虚部和相位谱。例如()jXe)=)8109.056.11)9028.096.0122jjjjeeee利用函数freqz计算出()jHe,然后利用函数abs和angle分别求出幅频特性与相位特性最后利用plot命令绘出曲线。2)求解序列DFT的函数有:fft,ifft。函数fft(x)可以计算R点序列的R点DFT值;而fft(x,N)则计算R点序列的N点DFT,若RN,则直接截取R点DFT的前N点,若RN,则x先进行补零扩展为N点序列再求N点DFT。函数ifft(X)可以计算R点的谱序列的R点IDFT值;而ifft(X,N)同fft(x,N)的情况。三、实验设备计算机、MATLAB软件四、实验内容(1)编程计算并画出下面DTFT的实部,虚部、幅度和相位谱。23230.13130.15530.13130.0518()11.28281.03880.3418jwjwjwjwjwjwjweeeXeeee程序如下:num=[0.1313-0.15530.13130.0518];den=[11.28281.03880.3418];-4-w=0:0.001:2*pi;H=freqz(num,den,w);figuresubplot(221)plot(w,real(H));title('实部')gridon;subplot(222)plot(w,imag(H))title('虚部')gridsubplot(223)plot(w,abs(H))title('幅度')gridsubplot(224)plot(w,abs(H))title('相位谱')gridon;波形如下:图1-1DTFT的实部,虚部、幅度和相位谱-5-(2)计算32点序列x(n)=cos3213n,0n31的32点和64点DFT,分别绘出幅度谱图形,并绘出该序列的DTFT图形。程序如下:n1=0:15;n2=0:31;x1=cos((13*pi*n1)/32)x2=cos((13*pi*n2)/32)X1=fft(x1);X2=fft(x2);subplot(211)plot(n1,abs(X1))title('32点DFT')gridon;subplot(212)plot(n2,abs(X2))title('64点DFT')gridon;波形如下:图1-2序列DFT幅度谱图形和DTFT图形DTFT程序如下:-6-A=1;n=0:31;x=cos((13*pi*n)/32);B=x;w=0:0.01:2*pi*2;[H]=freqz(B,A,w);magH=abs(H);subplot(2,1,1);plot(w,magH);grid;ylable('Magnitude');subplot(2,1,2);plot(w,phaH);grid;xlable('w');ylable('phase');gridon;波形如下:图1-3DTFT图形-7-实验2FFT算法与应用一、实验目的在理论学习的基础上,通过本次实验。加深对快速傅里叶变换的理解,熟悉FFT算法。熟悉应用FFT对典型信号进行频谱分析的方法。了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。二.实验原理在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长序列往往也可以用有限长序列来逼近。对于有限长序列可以使用离散傅里叶变换(DFT),这一变换可以很好地反映序列的频域特性,并且容易利用快速算法在计算机的上的实现。当序列的长度是N时,定义离散傅里叶变换为210X(k)=DFT[x(n)]=()NjknNnxne=10()NknNnxnW式中,2jNNWe的反变换定义为()[()]xnIDFTXk=101()NknNkXkWN根据上式令kNZW,则有10()()[()]kNNknNzWnXzxnWDFTxn所以,X(k)是在z变换在单位圆上的等间隔采样,或者说是序列傅里叶变换的等间隔采样。时域采样在满足乃奎斯特定理时,就是不会发生频谱混叠;同样,在频率域进行采样的时候,只要采样间隔足够小,也不会发生时域序列的混叠。DFT是对序列傅里叶变换的等间距采样,因此可以利用于序列的频谱分析。在运用于DFT进行频谱分析的时候可能有三种误差,分析如下:(1)混叠现象序列的频谱是采样信号频谱的周期延拓,周期是T2,因此当采样速率不满足乃奎斯特定理时,即采样频率小于两倍的信号频率时,经过采样就会发生频谱混叠。这导致采样后的信号序列频谱不能真实地反映原信号的频谱。(2)泄露现象实际中的信号序列往往很长,甚至是无限长序列,为了方便,往往用截断的-8-序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截断等价于给原信号序列乘以一个矩形窗函数,而矩形窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。(3)栅栏响应因为DFT是对单位圆上z变换的均匀采样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应,从某种角度来看,用DFT来观看频谱就好像通过一个栅栏来观看一幅景象,只能在离散点上看到真实的频谱。减小栅栏效应的一个方法是在源程序的末端补一些零值,从而变动DFT的点数。函数fft(x)可以计算R带你序列的R点的DFT值;而fft(x,N)则计算R点序列的N点DFT,若RN,则直接截取R点DFT的前N点,若RN,则x先进行补零扩展为N点序列再求N点DFT。函数ifft(X)可以计算R点的谱序列的R点IDFT值;而ifft(X,N)同fft(x,N)的情况。函数conv(x1,x2)可以计算两序列的线性卷积。三.实验设备计算机,MATLAB软件。四.实验内容编制信号产生子程序及本实验的频谱分析主程序。实验中需要用到的基本信号包括:(1)三角波序列:x(n)=n+13,03n13-n,47n0,其它程序如下:n2=0:7;x2=[13,14,15,16,9,8,7,6];subplot(221);stem(n2,x2);title('x2序列');gridon;k1=0:7;y21=fft(x2,8);magy21=abs(y21);subplot(222);stem(k1,magy21);title('x2的8点FFT');gridon;k2=0:15;y22=fft(x2,16);magy22=abs(y22);subplot(224);-9-stem(k2,magy22);title('x2的16点FFT');gridon;波形如下:图2-1三角波序列以及它的8点和16点FFT(2)利用DFT计算下面两序列的线性卷积x(n)={3,-4,6,0,6,-4},h(n)={1,-4,3,4}程序如下:clearall;closeall;clc;N=9;g=[3-4606-4];h=[1-434];x=conv(g,h)gf=fft(g,N);hf=fft(h,N);xx=gf.*hfX=ifft(xx,N);gridon;波形如下:-10-图2-2用DFT计算的序列x(n)与h(n)线性卷积图(3)已知某序列x(n)在单位圆上的N=64等分样点的z变换为X(Zk)=X(k)=Nkje/213.011,k=0,1,2…,63。试分别用N点IFFT程序和N点FFT程序计算()[()]xnIDFTXk,绘出()xn及|()|Xk。程序如下:k=0:63;N=64;X=1./(1-0.13*exp(-j*2*pi*k/N));x=ifft(X,64)stem(abs(x));xlabel('n');ylabel('x(n)');title('25FF.单位圆上等分样点的Z变换图')gridon;波形如下:-11-图2-3单位圆等分样点Z变换图-12-实验3IIR数字滤波器的设计一.实验目的从理论上讲,任何的线性时不变(LTI)离散时间系统都可以看做一个数字滤波器,因此设计数字滤波器实际就是设计离散时间系统。数字滤波器包括IIR(无限冲击响应)和FIR(有限冲击响应)型,在设计时通常采用不同的方法。本实验通过使用MATLAB函数对数字滤波器进行设计和实现,要求掌握IIR数字巴特沃斯滤波器,数字切比雪夫滤波器的设计原理,设计方法和设计步骤;能根据给定的滤波器指标进行滤波器设计;同时也加深学生对数字滤波器的常用指标和设计过程的理解。二.实验原理在IIR滤波器的设计中,常用的方法是:先根据设计要求寻找一个合适的模拟原型滤波器Ha(s),然后根据一定的准则将比模拟原型滤波器转换为数字滤波器Hd(z),即我们需要设计的数字滤波器。IIR滤波器的阶数就等于所选的模拟原型滤波器的阶数,所以其阶数确定主要是在模拟原型滤波器设计中进行的。IIR数字滤波器的设计方法如下:(1)冲击响应不变法。对满足设计要求的模拟原型滤波器Ha(s)进行部分分式展开为1()NkkkAHasss;基于()dnh=()anTh,可得11()1NkdskTkHzezA(2)双线性变换法。对设计要求中给出的边界频率进行预畸处理,然后用得到的频率进行模拟滤波器设计,得到模拟