JIANGSU UNIVERSITY OF TECHNOLOGY
电气信息工程学院 数字信号处理实验
学院名称: 电气信息工程学院 专 业: 电子信息工程 班 级: 10 电子2W 姓 名: 张 友 华 学 号: 10311232 指导教师姓名: 张 维 玺
2013年12月
数字信号处理实验
目 录
实验一 离散时间信号的产生 -----------------------------------1
1 实验目的 ------------------------------------------------------1 2 实验原理 ------------------------------------------------------1 3 实验设备 ------------------------------------------------------2 4 实验内容 ------------------------------------------------------2
实验二 离散时间LTI系统的时域分析 ---------------------------4
1 实验目的 ------------------------------------------------------4 2 实验原理 ------------------------------------------------------4 3 实验设备 ------------------------------------------------------4 4 实验内容 ------------------------------------------------------4
实验三 离散时间信号的频域分析 --------------------------------6
1 实验目的 ------------------------------------------------------6 2 实验原理 ------------------------------------------------------6 3 实验设备 ------------------------------------------------------7 4 实验内容 ------------------------------------------------------7
实验四 离散时间LTI系统的Z域分析 ---------------------------8
1 实验目的 ------------------------------------------------------8 2 实验原理 ------------------------------------------------------8 3 实验设备 ------------------------------------------------------9 4 实验内容 ------------------------------------------------------9
实验五 FFT算法与应用 -----------------------------------------10
1 实验目的 -----------------------------------------------------10 2 实验原理 -----------------------------------------------------10 3 实验设备 -----------------------------------------------------11 4 实验内容 -----------------------------------------------------12
实验六 IIR数字滤波器的设计 ----------------------------------13
1 实验目的 -----------------------------------------------------13 2 实验原理 -----------------------------------------------------13 3 实验设备 -----------------------------------------------------14 4 实验内容 -----------------------------------------------------14
数字信号处理实验
实验一 离散时间信号的产生
1. 实验目的
数字信号处理系统中的信号都是以离散时间形态存在的,所以对离散时间信号的研究是数字信号处理的基本所在。而要研究离散时间信号,首先需要产生各种离散时间信号。使用MATLAB软件 很方便的产生各种常见的离散时间信号,而且它还有强大的绘图功能,便于用户直接地处理输出结果。
2. 实验原理
离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用x(n)来表示,自变量必须是整数,常见的离散时间信号如下: (1)单位冲激序列(n)
10n0n0
如果(n)在时间轴上延迟了k个单位,(nk)即:
1nk(nk)
0n0长度为N的单位冲激序列δ(n)可以通过下面的MATLAB命令获得。
n=-(N-1):N-1
x=[zeros(1,N-1) 1 zeros(1,N-1)]; setm(n,x)
延迟K个采样点的长度为N的单位冲激序列δ(N-k)(k (2) 单位阶跃序列u(n) 10n0n0 长度为N的单位阶跃序列u(n)可以通过下面的MATLAB命令获得。 n=-(N-1):N-1 x=[zeros(1,N-1) ones(1,N)]; setm(n,x) 延迟的单位阶跃序可以用类似于单位冲激信号的方法产生。 (3)矩形序列RN=u(n)-u(n-N) (4)正弦序列x(n) = Acos(ωn +φ).这里A,ω,φ都是实数分别为正弦信号的振幅,角频率,和初始相位,可以用下面的命令获得: n=0:N-1 x=A*cos(2*pi*f*n/Fs+phase) (5) 单边指数序列:x(n)anu(n) 长度为N的单边指数序列可以通过下面的MATLAB命令实现 第 1 页 共 15 页 数字信号处理实验 n0:N1xa.^nsetm(n,x) 3.实验设备 计算机,MATLAB软件。 4. 实验内容 n01绘制程序产生单位阶跃信号u(n) 及u(n-“学号后两位”)及u(n)- u(n-“学号后两 0n0位”),并绘出其图形。 % 2.m利用ones(1,N)产生单位采样序列 n=-49:49;%定义横轴坐标 x=[zeros(1,49) ones(1,50)];%matlab中数组下标从1开始 close all; stem(n,x);%绘制离散序列数据 title('单位阶跃序列') % 2.m利用ones(1,N)产生单位采样序列 n=0:36; %定义横轴坐标 x=[zeros(1,32) ones(1,5)]; %matlab中数组下标从1开始 close all; stem(n,x); %绘制离散序列数据 title('单位阶跃序列') 第 2 页 共 15 页 数字信号处理实验 N=32; n=0:36; x=sign(sign(N-1-n)+1); close all; stem(n,x); 第 3 页 共 15 页 数字信号处理实验 实验二 离散时间LTI系统的时域分析 1.实验目的 通过本实验,要求学生学会运用MATLAB求解离散时间系统的零状态响应;学会运用MATLAB求解离散时间系统的单位冲激响应;学会运用MATLAB求解离散时间系统的卷积和。 2.实验原理 MATLAB中函数filter可对上式的差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为 y=filter(b,a,x) 其中,x为输入的离散序列;y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程右端和左端的系数向量。 系统的单位冲激响应定义为系统在δ(n)激励下系统的零状态响应,用h(n)表示。MATLAB求解单位冲激响应可利用函数filter,并设激励为δ(n)函数。 系统的单位阶跃响应定义为系统在u (n)激励下系统的零状态响应,用g(n)表示。MATLAB求解单位阶跃响应可利用函数filter,并设激励为u(n)函数。 系统的零状态响应是激励与系统的单位冲激响应的卷积。 离散时间信号的卷积运算是求和运算,因而常称为卷积和。MATLAB求离散时间信号卷集和的命令为conv,其语句格式为 y=conv(x,h)。 3.实验设备 计算机,MATLAB软件。 4.实验内容 编制程序求解下列两个系统的单位冲激响应和单位阶跃响应,并绘出其图形。 1,y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1] N=21; a=[1,-1]; b=[1,0.75,0.125]; x1=[1 zeros(1,N-1)]; x2=ones(1,N); k=0:1:N-1; h=filter(a,b,x1) y=filter(a,b,x2) subplot(1,2,1);stem(k,h,'.');xlabel('n');ylabel('单位冲激响应');grid on; subplot(1,2,2);stem(k,y,'.');xlabel('n');ylabel('单位阶跃响应');grid on; 第 4 页 共 15 页 数字信号处理实验 2,y[n]=0.25{x[n-1]+x[n-2]+x[n-3]+x[n-4]} N=20; a=0.25*[1,1,1,1]; b=[1]; x1=[1 zeros(1,N-1)]; x2=ones(1,N); k=0:1:N-1; h=filter(a,b,x1) y=filter(a,b,x2) subplot(1,2,1);stem(k,h,'.');xlabel('n');ylabel('单位冲激响应 ');grid on; subplot(1,2,2);stem(k,y,'.');xlabel('n');ylabel('单位阶跃响应');grid on; 第 5 页 共 15 页 数字信号处理实验 实验三 离散时间信号的频域分析 1. 实验目的: 信号的变换域分析是信号处理中一种有效的工具。在离散信号的时域分析中,我们通常将信号 jnjn表示成单位采样序列[n]的线性组合,而在频域中,我们将信号表示成复变量e或eN的线性组 2合。通过这样的表示,可以将时域的离散序列映射到频域以便于进一步的处理。 在本实验中,将学习利用MATLAB计算离散时间信号的DTFT和DFT,并加深对其相互关系的理解。 2. 实验原理: (一)DTFT和DFT的定义及其相互关系: X(e)x[n]ejnω序列x[n] 的DTFT定义: njω jωX(e)可以表示为: 它是关于自变量的复函数,且是以2为周期的连续函数。 X(ejω)Xre(ejω)jXim(ejω)其中, Xre(ejω)和 Xim(ejω) jωX(e)的实部和虚部;还可以表示为: 分别是 X(ejω)X(ejω)ej(ω)其中, X(ejω)jωjωX(e)的幅度函数和相位函数;它们都是()arg{X(e)}和分别是 的实函数,也是以2为周期的周期函数。 序列x[n]的N点DFT定义: X[k]X(eN1n0j2kN)x[n]en0N1j2knNx[n]WNkn X[k]是周期为N的序列。 X(ejω)与X[k]的关系:X[k]是对X(ejω)在一个周期中的谱的等间隔N点采样,即: X[k]X(ejω)|2kN, 第 6 页 共 15 页 数字信号处理实验 jωX(e)可以通过对X[k]内插获得,即: 而 1X(e)NjωX[k]k0N1sin(N2k2ej[(2k/N)][(N1)/2]N2ksin()2N )3.实验设备 计算机,MATLAB软件。 4. 实验内容: 编程计算并画出下面DTFT的实部,虚部,幅度和相位谱。 0.05180.1553ej0.1553ej20.0518ej3X(e) 11.2828ej1.0388ej20.3418ej3jclear all;close all;clc; num=[0.0518 -0.1553 0.1553 0.0518]; den=[1 1.2828 1.0388 0.3418]; w=0:0.001:2*pi; H=freqz(num,den,w); figure subplot(221) plot(w,real(H)) title('实部') grid subplot(222) plot(w,imag(H)) title('虚部') grid subplot(223) plot(w,abs(H)) title('幅度') grid subplot(224) plot(w,unwrap(angle(H))) title('相位谱') grid 第 7 页 共 15 页 数字信号处理实验 实验四 离散时间LTI系统的Z域分析 1. 实验目的: 线性时不变(LTI)离散时间系统的特性完全可以用其冲击响应序列h[n]来表示,则前面给出的离散时间信号的变换分析手段也可以用于离散时间系统的分析中。在LTI的离散时间系统变换域分析中,我们常用传递函数H(z)和频率响应H(ejw)来表示系统。 本实验通过使用MATLAB函数对离散时间系统的一些特性进行仿真分析,以加深对离散时间系统的零极点、稳定性,频率响应等概念的理解 2. 实验原理: 我们定义LTI离散时间系统的输出的Z变换Y(z)与输入的Z变换X(z)的比值为该系统的传递函 H(z)数,即 Y(z)X(z)为系统的传递函数。 p(z)p0p1z1...pMzMH(z)D(z)d0d1z1...dNzN H(z)分解因式 i0NpkzdkzMiiK1(1iz)1(1iz)i1i1NMi0 ,其中i和i称为零、极点。 利用系统的传递函数H(z),我们可以分析系统的零极点,稳定性及实现结构等特点。 频率响应: jnjnee因为大多数离散时间信号都可以分解为的线性组合,所以研究输入的响应具有极大的jnx[n]e意义,即当输入为时,输出为: y[n]mjh(m)ej(nm)ejnjnmh(m)ejmejnH(ej) H(e这里, )nh(n)e是h(n)的DTFT,称为LTI离散时间系统的频率响应。 jH(e),我们可以分析系统对各种频率成分的响应特性,并推出系统的 利用系统的频率响应 特性(高通,低通,带通,带阻,线性相位等)。 系统传递函数与频率响应之间的关系: 从前面的推导可以看出,系统的传递函数是系统冲击响应序列的Z变换,而系统的频率响应是 jH(e)的关系为: H(z)冲击响应的DTFT,因此传递函数与频率响应 H(ej)H(z)|zej 第 8 页 共 15 页 数字信号处理实验 p(ej)p0p1ej...pMejMH(e)jD(e)d0d1ej...dNejNj。 3.实验设备 计算机,MATLAB软件。 4、实验内容: 已知有一个由下式给定的LTI离散时间系统: 0.05280.797z10.1295z20.1295z30.797z40.0528z5H(z)11.8107z12.4947z21.8801z30.9537z40.2336z5要求由键盘 实现系统参数输入,并绘出幅频和相频响应曲线和零、极点分布图,进而分析系统的滤波特性和稳定性。 k=512; num=[0.0528 0.0787 0.1295 0.1295 0.797 0.0528]; den=[1 -1.8107 2.4947 -1.8801 0.9537 -0.2336 ]; w=0: pi/k: pi; h=freqz(num,den,w); subplot(2,1,1);plot(w/pi,abs(h)); title('幅度谱') [z,p,k]=tf2zp(num,den); disp('零点');disp(z); disp('极点');disp(p); subplot(2,1,2);zplane(num,den); title('零极点图'); 第 9 页 共 15 页 数字信号处理实验 实验五 FFT算法与应用 1. 实验目的: 1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法。 2、熟悉应用FFT对典型信号进行频谱分析的方法。 3、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。 2.实验原理: 一个连续信号的频谱可以用它的傅立叶变换表示为 (4-1) 如果对该信号进行理想采样,可以得到采样序列 (4-2) 同样可以对该序列进行z变换,其中T为采样周期 (4-3) 当 的时候,我们就得到了序列的傅立叶变换 (4-4) 其中ω称为数字频率,它和模拟域频率的关系为 (4-5) 式中的 是采样频率。上式说明数字频率是模拟频率对采样率的归一化。同模拟域的情况相似, 数字频率代表了序列值变化的速率,而序列的傅立叶变换称为序列的频谱。序列的傅立叶变换和对应的采样信号频谱具有下式的对应关系。 (4-6) 即序列的频谱是采样信号频谱的周期延拓。从式(4-6)可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足Nyquist定理。 在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅立叶变换(DFT),这一变换可以很好地反应序列的频域特性,并且容易利用快速算法在计算机上实现。当序列的长度是N时,我们定义离散傅立叶变换为: (4-7) 第 10 页 共 15 页 数字信号处理实验 其中,它的反变换定义为: (4-8) 根据式(4-3)和(4-7)令 ,则有 (4-9) 可以得到, 是z平面单位圆上幅角为的点,就是将单位 圆进行N等分以后第k个点。所以,X(k)是z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。时域采样在满足Nyquist定理时,就不会发生频谱混叠;同样地,在频率域进行采样的时候,只要采样间隔足够小,也不会发生时域序列的混叠。 DFT是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。在运用DFT进行频谱分析的时候可能有三种误差,分析如下: (1)混叠现象 从式(4-6)中可以看出,序列的频谱是采样信号频谱的周期延拓,周期是2π/T,因此当采样速率不满足Nyquist定理,即采样频率 小于两倍的信号(这里指的是实信号)频率时,经过采样 就会发生频谱混叠。这导致采样后的信号序列频谱不能真实地反映原信号的频谱。所以,在利用DFT分析连续信号频谱的时候,必须注意这一问题。避免混叠现象的唯一方法是保证采样的速率足够高,使频谱交叠的现象不出现。这就告诉我们,在确定信号的采样频率之前,需要对频谱的性质有所了解。在一般的情况下,为了保证高于折叠频率的分量不会出现,在采样之前,先用低通模拟滤波器对信号进行滤波。 (2)泄漏现象 实际中的信号序列往往很长,甚至是无限长序列。为了方便,我们往往用截短的序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截短等价于给原信号序列乘以一个矩形窗函数。而矩形窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。值得一提的是,泄漏是不能和混叠完全分离开的,因为泄露导致频谱的扩展,从而造成混叠。为了减小泄漏的影响,可以选择适当的窗函数使频谱的扩散减到最小。 (3)栅栏效应 因为DFT是对单位圆上z变换的均匀采样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应,从某种角度来看,用DFT来观看频谱就好像通过一个栅栏来观看一幅景象,只能在离散点上看到真实的频谱。这样的话就会有一些频谱的峰点或谷点被“栅栏”挡住,不能被我们观察到。减小栅栏效应的一个方法是在源序列的末端补一些零值,从而变动DFT的点数。这种方法的实质是认为地改变了对真实频谱采样的点数和位置,相当于搬动了“栅栏”的位置,从而使得原来被挡住的一些频谱的峰点或谷点显露出来。注意,这时候每根谱线多对应的频率和原来的已经不相同了。 从上面的分析过程可以看出,DFT可以用于信号的频谱分析,但必须注意可能产生的误差,在应用过程中要尽可能减小和消除这些误差的影响。 3.实验设备 计算机,MATLAB软件。 第 11 页 共 15 页 数字信号处理实验 4. 实验内容: 利用DFT计算机下面两序列的线性卷积 x(n)={3,-4,6,0,6,-4}, h(n)={1,-4,3,4} clear all;close all;clc; a=[3 -4 6 0 6 -4]; b=[1 -4 3 4]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n');ylabel('幅度'); 第 12 页 共 15 页 数字信号处理实验 实验六 IIR数字滤波器的设计 1. 实验目的: 从理论上讲,任何的线性时不变(LTI)离散时间系统都可以看做一个数字滤波器,因此设计数字滤波器实际就是设计离散时间系统。数字滤波器包括IIR(无限冲击响应)和FIR(有限冲击响应)型,在设计时通常采用不同的方法。 本实验通过使用MATLAB函数对数字滤波器进行设计和实现,同时也加深学生对数字滤波器的常用指标和设计过程的理解。 2. 实验原理: (一) 数字滤波器设计: 数字滤波器设计步骤: a. 整理给定的滤波器设计要求,得到参数化描述,即通带,阻带截止频率p和s,通带阻带纹 波p和s等数据。 b. 寻找一个数字系统函数G(z),使其频率响应逼近设计要求。 c. 选择合适的滤波器结构对满足要求的传递函数G(z)进行实现。 a. 滤波器类型选择: 在数字滤波器实现中可选择IIR滤波器和FIR滤波器两种。在实现相同幅频特性时,IIR滤波器的阶数会相对FIR滤波器的更低;而在实现中,对相同阶数的两种滤波器来看,对每个采样值所做的乘法数量,IIR约为FIR的两倍;另外,FIR还可以方便地设计成线性相位滤波器。总的来说,IIR滤波器除不能实现线性相位这一点外,由于阶数的原因,从计算复杂度上较FIR滤波器有很大的优势,。 根据以上这些区别,结合实际的设计要求,就可以选择一款合适的滤波器。 b. 滤波器设计的方法: 由于IIR滤波器和FIR滤波器各自的结构特点,所以它们的设计方法也不一样。 在IIR滤波器的设计中,常用的方法是:先根据设计要求寻找一个合适的模拟原型滤波器 Ha(s),然后根据一定的准则将此模拟原型滤波器转换为数字滤波器G(z),即为 我们需要设计的数字滤波器。 在FIR滤波器设计中,一般使用比较直接的方法:根据设计的要求在时域对理想的冲击响应序列进行加窗逼近,或从频域对需要实现的频率响应特性进行采样逼近然后进行反FFT。 c. 滤波器阶数估计: IIR滤波器的阶数就等于所选的模拟原型滤波器的阶数,所以其阶数确定主要是在模拟原型滤波器设计中进行的。 FIR滤波器阶数估计可以根据很多工程中的经验公式,这些公式可以直接从设计的参数要求中估计滤波器阶数。例如,对FIR低通滤波器,已知通带截止频率p,阻带截止频率s,最大通带纹波p和最大最带纹波s,则可以使用下面的公式估计其阶数: 第 13 页 共 15 页 数字信号处理实验 NIIR数字滤波器的设计方法: 一.冲击响应不变法: 20log10(ps)1314.6(sp)/2 1. 对满足设计要求的模拟原型滤波器Ha(s)进行部分分式展开为: Ha(s) 2. 基于g(n)ha(nT) ,可以得到: Ak (Re(sk)max0) ssk1kNG(z) 二.双线性变换法: AkskT1 1ezk1N1.对设计要求中给出的边界频率进行预畸处理,然后用得到的频率进行模拟滤波器设计,得到模拟原型滤波器Ha(s)。 2.用双线性变换法求出数字滤波器:G(z)Ha(s)|3.实验设备 计算机,MATLAB软件。 z1z11z1。 4. 实验内容 基于Butterworth型模拟滤波器原型使用双线性变换法实现模拟滤波器到数字滤波器的,要求参数通带截止频率π;阻带最小衰减As=40dB; clear all; clc; close all; Rp=1; Rs=40; Fs=500; Ts=1/Fs;%双线性变换时频率的预畸变 wp=100*2*pi*Ts; %利用公式,求数字域通带截止频率wp ws=200*2*pi*Ts; %利用公式,求数字域阻带截止频率ws wp1=2*tan(wp/2)/Ts; %利用公式进行预畸变 ws1=2*tan(ws/2)/Ts;%选择滤波器的最小阶数 [N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%注意此处带入经畸变后的模拟频率 %参数%计算 p=0.4π;通带最大衰减Ap=1dB;阻带截止频率s=0.25 第 14 页 共 15 页 数字信号处理实验 butterworth低通原型模拟滤波器 [Z,P,K]=buttap(N);%零极点增益滤波器模型到传递函数模型的转变 [Bap,Aap]=zp2tf(Z,P,K); %把模拟滤波器原型转换乘截止频率为Wn的低通滤波器 [b,a]=lp2lp(Bap,Aap,Wn); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [bz,az]=bilinear(b,a,Fs);%绘制频率响应曲线 [H,W]=freqz(bz,az); plot(W/pi,20*log10(abs(H))); grid; xlabel('频率w/pi'); ylabel('频率相应幅度/dB'); title('滤波器的幅频响应曲线'); 第 15 页 共 15 页 因篇幅问题不能全部显示,请点此查看更多更全内容