数字信号处理实验指导书M.doc
《数字信号处理实验指导书M.doc》由会员分享,可在线阅读,更多相关《数字信号处理实验指导书M.doc(142页珍藏版)》请在三一文库上搜索。
1、数字信号处理实验电子信息科学与技术实验室2012年7月140目录实验一离散时间信号的时域表示1实验二序列的基本运算和时域变换4实验三离散信号的卷积和6实验四离散傅立叶变换及其特性验证8实验五信号处理中FFT的应用11实验六离散系统的Z域分析15实验七无限冲激响应(IIR)数字滤波器的三种结构19实验八冲激响应不变法IIR数字滤波器设计23实验九双线性变换法IIR数字滤波器设计26 实验一 离散时间信号的时域表示一、实验目的1、熟悉MATLAB命令,掌握离散时间信号序列的时域表示方法。2、掌握用MATLAB描绘二维图像的方法。二、实验原理与计算方法序列的表示方法有列举法、解析法和图形法,相应的用
2、MATLAB也可以有这样几种表示方法,分别介绍如下:1、列举法在MATLAB中,用一个列向量来表示一个有限长序列,由于一个列向量并不包含位置信息,因此需要用表示位置的n和表示量值的x两个向量来表示任意一个序列,如:例1.1:n=-3,-2,-1,0,1,2,3,4;x=2,1,-1,0,1,4,3,7;如果不对向量的位置进行定义,则MATLAB默认该序列的起始位置为n=0。由于内存有限,MATLAB不能表示一个无限序列。2、解析法对于有解析表达式的确定信号,首先定义序列的范围即n的值,然后直接写出该序列的表达式,如:例1.2:实现实指数序列,的MATLAB程序为:n=0:10;x=(0.9).
3、n;例1.3:实现正余弦序列,的MATLAB程序为:n=5:15;x=3*cos(0.1*pi*n+pi/3)+2*sin(0.5*pi*n);3、图形法在MATLAB中用图形法表示一个序列,是在前两种表示方法的基础上将序列的各个量值描绘出来,即首先对序列进行定义,然后用相应的画图语句画图,如:例1.4:绘制在1中用列举法表示的序列的图形,则在向量定义之后加如下绘图语句:stem(n,x);此时得到的图形的横坐标范围由向量n的值决定,为-3到4,纵坐标的范围由向量x的值决定,为-1到7。应用stem函数时应确保自变量n和函数值x的个数相等。此外可用函数axis(x1,x2,y1,y2)对横纵坐
4、标进行限定,以完善图形,其中x1和x2分别为横坐标的起始和截止位置,y1和y2分别为纵坐标的起始和截止位置。也可用xlabel()、ylabel()和title()为该图添加横、纵坐标说明和标题。subplot(m,n,k)函数可以将当前窗口分成m行n列个子窗口,并在第k个子窗口绘图。窗口的排列顺序为从左至右,从上至下分别为1,2,m*n。以上为几个常用绘图函数的基本用法,有关各函数的其他参数可参考MATLAB的帮助文件。下面给出产生单位抽样序列和单位阶跃序列的两个函数,供参考。例1.5:产生单位抽样序列的函数impseq(n0,n1,n2)。function n,x = impseq(n0,
5、n1,n2)% Generates x(n) = delta(n-n0); n1 = n,n0 = n2% -% x,n = impseq(n0,n1,n2)%if (n0 n2) | (n1 n2)error(arguments must satisfy n1 = n0 = n2)endn = n1:n2;%x = zeros(1,(n0-n1), 1, zeros(1,(n2-n0);x = (n-n0) = = 0;该函数产生一个抽样位置在n0,序列范围在n1和n2之间的单位抽样序列。例1.6:产生单位阶跃序列的函数stepseq(n0,n1,n2)。function n,x = ste
6、pseq(n0,n1,n2)% Generates x(n) = u(n-n0); n1 = n,n0 = n2% -% x,n = stepseq(n0,n1,n2)%if (n0 n2) | (n1 n2)error(arguments must satisfy n1 = n0 = 0;该函数产生一个起始位置在n0,序列范围在n1和n2之间的单位阶跃序列。注意:由function产生的函数文件,不能直接运行,只能放在当前路径下的文件夹里,供其他M文件调用。三、实验内容(1)参考示例程序,产生一个有延迟的单位抽样序列:d (n-11),绘出序列的图形。(2)参考示例程序,产生一个向前时移7个
7、时刻的单位阶跃序列:u(n+7),绘出序列的图形。(3)产生一个指数为-0.1+(pi/6)*in的复指数序列,并绘出序列的实部、虚部、幅度和相位的波形。实验二 序列的基本运算和时域变换一、实验目的1、熟悉用MATLAB描绘二维图像的方法。2、掌握用MATLAB对序列进行基本的运算和时域变换的方法。二、实验原理与计算方法1、加法:x1(n)+x2(n)序列的加法运算为对应位置处量值的相加,在MATLAB中可用运算符“+”实现,但要求参与运算的序列的长度必须相等。如果长度不等或者长度相等但采样位置不同,则不能直接应用该运算符,此时需要先给定参数使序列具有相同的位置向量和长度。下面给出sigadd
8、函数实现任意两序列的加法运算。例:function y,n = sigadd(x1,n1,x2,n2)% implements y(n) = x1(n)+x2(n)% % y,n = sigadd(x1,n1,x2,n2)% y = sum sequence over n, which includes n1 and n2% x1 = first sequence over n1% x2 = second sequence over n2 (n2 can be different from n1)%n = min(min(n1),min(n2):max(max(n1),max(n2); % d
9、uration of y(n)y1 = zeros(1,length(n); y2 = y1; % initializationy1(find(n=min(n1)&(n=min(n2)&(n0时,表示序列向右平移,此时新序列的位置向量为n+m;当m0时,表示序列向左平移,此时新序列的位置向量为n-m。三、实验内容(1)已知x(n)=1,2,3,4,5,6,7,6,5,4,3,2,1,参考示例程序,绘出下列序列的波形。a.x1(n)=2x(n-5)-3x(n+4)b.x2(n)=x(3-n)+x(n)x(n-2)四、思考(1)代数运算符号*和.*的区别是?实验三 离散信号的卷积和一、实验目的1、
10、掌握两个离散信号卷积和的计算方法和编程技术。2、进一步熟悉用MATLAB描绘二维图像的方法。二、实验原理与计算方法两个离散序列x(n)与y(n)的卷积和f(n)定义为由于通常信号处理中所碰到的都是有始信号或有限时间信号,因此在实际计算卷积和时,求和是在有限范围内进行的。计算过程中上下限的选取和所得结果的分布区间取决于参与卷积的两个序列,下面将分别进行讨论:1、两个从n = 0开始的序列和的卷积和 (1)上式右边因子u(n)表示卷积和的结果也是一个从n = 0开始的序列。2、从n = n1开始的序列和从n = n2开始的序列的卷积和,其中n1和n2为任意整数。 (2)上式右边因子u(n-n1-n
11、2)表示卷积和是一个从n = n1+n2开始的序列。3、从n = n1开始的长度为N1的加窗序列和从n = n2开始的长度为N2的加窗序列的卷积和,其中则 (3)所得卷积和也是一个加窗序列,从n = n1+ n2开始,长度为N1+ N2-1。MATLAB提供了一个内部函数conv(x,h)用来计算两个有限长度序列的卷积,该函数得到的卷积结果默认从n=0开始,因此当参与卷积的两个序列的起始位置不是n=0时,则由该函数得到的计算结果将出现错误,此时需要重新定义结果的位置向量。由以上卷积运算的原理可知,两有限长序列卷积后仍为有限长序列,长度为两序列长度之和减1,结果的起始位置为两序列起始位置之和,截
12、止位置为两序列截止位置之和。据此,可以得到卷积结果的位置向量。三、实验内容(1) 根据(1)式计算两个从n = 0开始的序列和的卷积和,其中A=40,a = 0.5。取50个样值点,作出序列、及卷积和f(n)的图像。(2) 根据(3)式计算两个有限长序列和的卷积和,其中作出序列x(n)、y(n)及卷积和f(n)的图像。实验四 离散傅立叶变换及其特性验证一、实验目的1、掌握离散时间傅立叶变换(DTFT)的计算方法和编程技术。2、掌握离散傅立叶变换(DFT)的计算方法和编程技术。3、理解离散傅立叶变换(DFT)的性质并用MATLAB进行验证。二、实验原理与计算方法1、离散时间傅立叶变换如果序列x(
13、n)满足绝对可和的条件,即,则其离散时间傅立叶变换定义为: (1)如果x(n)是无限长的,则不能直接用MATLAB由x(n)计算X(ejw),但可以用它来估计X(ejw)表达式在0,频率区间的值并绘制它的幅频和相频(或实部和虚部)曲线。如果x(n)是有限长的,则可以用MATLAB对任意频率w处的X(ejw)进行数值计算。如果要在0,间按等间隔频点估计X(ejw),则(1)式可以用矩阵向量相乘的运算来实现。假设序列x(n)在(即不一定在0, N-1)有N个样本,要估计下列各点上的X(ejw):它们是0,之间的(M+1)个等间隔频点,则(1)式可写成: (2)将x(nl)和X(ejwk)分别排列成
14、向量x和X,则有: X=Wx (3)其中W是一个(M+1)N维矩阵:将k和n排成列向量,则在MATLAB中,把序列和下标排成行向量,对(3)式取转置得:其中nTk是一个N(M+1)维矩阵。用MATLAB实现如下:k=0:M; n=n1:n2;X=x*(exp(-j*pi/M).(n*k);2、离散傅立叶变换一个有限长序列的离散傅立叶变换对定义为: (4) (5)以列向量x和X形式排列x(n)和X(k),则式(4)、(5)可写成:X=WNx其中矩阵WN由下式给出:可由下面的MATLAB函数dft和idft实现离散傅立叶变换运算。function Xk = dft(xn,N)% Computes
15、Discrete Fourier Transform% -% Xk = dft(xn,N)% Xk = DFT coeff. array over 0 = k = N-1% xn = N-point finite-duration sequence% N = Length of DFT%n = 0:1:N-1; % row vector for nk = 0:1:N-1; % row vecor for kWN = exp(-j*2*pi/N); % Wn factornk = n*k; % creates a N by N matrix of nk valuesWNnk = WN . nk;
16、 % DFT matrixXk = xn * WNnk; % row vector for DFT coefficientsfunction xn = idft(Xk,N)% Computes Inverse Discrete Transform% -% xn = idft(Xk,N)% xn = N-point sequence over 0 = n = N-1% Xk = DFT coeff. array over 0 = k = N-1% N = length of DFT%n = 0:1:N-1; % row vector for nk = 0:1:N-1; % row vecor f
17、or kWN = exp(-j*2*pi/N); % Wn factornk = n*k; % creates a N by N matrix of nk valuesWNnk = WN . (-nk); % IDFT matrixxn = (Xk * WNnk)/N; % row vector for IDFT values3、离散傅立叶变换的性质(1)线性性质:注意:若x1(n)和x2(n)分别是N1点和N2点的序列,则选择N3= max (N1, N2),将它们作N3点DFT处理。(2) 周期性:离散傅立叶变换(DFT)是周期序列DFS取主值区间形成的,因此序列及其DFT 具有特性和。通
18、常将结果间的量值表示在k的负值区间。(3)对称性:实序列的离散傅立叶变换可以表示为,其中实部为偶对称,虚部为奇对称,幅值为偶对称,相位为奇对称。如果序列是实偶对称序列,则也是实偶对称,即;如果序列是实奇对称序列,则是虚奇对称,即;如果序列是虚偶对称序列,则也是虚偶对称,即;如果序列是虚奇对称序列,则是实奇对称,即。根据上述关系,对于实序列,则有;对于纯虚序列,则有。1、理解离散傅立叶变换(DFT)的圆周卷积性质2、掌握用MATLAB实现圆周卷积的方法。三、实验内容(1)将实指数函数抽样,取抽样周期为1/64,作64点DFT,并作出实部、虚部和幅频、相频特性曲线。(2)将图4-2中的两个连续函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 指导书
