理论课第7章yyxMATLAB在数字信号处理中的应用精讲课件.ppt
《理论课第7章yyxMATLAB在数字信号处理中的应用精讲课件.ppt》由会员分享,可在线阅读,更多相关《理论课第7章yyxMATLAB在数字信号处理中的应用精讲课件.ppt(156页珍藏版)》请在三一办公上搜索。
1、1,第 7章 MATLAB在数字信号处理中的应用,2,书山有路勤为径,学海无涯苦作舟。,好好学习,天天向上,3,引言,数字信号处理中包含离散时间信号与系统的一部分知识。本章主要研究内容分为两部分:离散时间信号与系统时域分析离散时间信号与系统频域分析在数字信号处理中还有一个非常大的知识点:数字滤波器设计,留待下学期开设本课程时,可以学习。,4,一、离散时间信号与系统时域分析,5,包含内容,信号分析典型信号表示impseq(),stepseq()7.1 序列相加,相乘7.2 序列合成和截取7.3 序列移位和周期延拓7.6离散序列卷积系统分析7.4系统响应7.5系统线性判定,6,7.1 离散信号的产
2、生及时域处理,时域离散信号用x(n)表示(离散序列)。x和n同时使用才能完整地表示一个序列:时间变量n(表示采样位置)只能取整数;向量x(表示采样点的幅度)与n一一对应。由于n序列是按整数递增的,可简单地用其初值ns决定,因为它的终值nf取决于ns 和x的长度length(x),故可写成:n=ns:nf 或n=ns:nslength(x)1,7,典型信号表示impseq(),stepseq(),8,例7.1 序列的相加和相乘,给出两个序列x1(n)和x2(n)。x1=0,1,2,3,4,3,2,1,0;n1=-2:6;x2=2,2,0,0,0,-2,-2;n2=2:8;要求它们的和ya及乘积y
3、p。解:编程的思路是把序列长度延拓到覆盖n1和n2的范围,这样才能把两序列的时间变量对应起来,然后进行对应元素的运算。,9,例程,x1=0,1,2,3,4,3,2,1,0;ns1=-2;%给定x1及ns1x2=2,2,0,0,0,-2,-2;ns2=2;%给定x2及ns2nf1=ns1+length(x1)-1;nf2=ns2+length(x2)-1;ny=min(ns1,ns2):max(nf1,nf2);%y(n)的时间变量xa1=zeros(1,length(ny);xa2=xa1;%延拓序列初始化xa1(find(ny=ns1)%给xa2 赋值x2ya=xa1+xa2%序列相加yp=
4、xa1.*xa2,10,结果显示,11,例7.2 序列的合成和截取,用例6.13的结果编写产生矩形序列RN(n)的程序。序列起点为n0,矩形序列起点为n1,长度为N(n0,n1,N由键盘输入)。并用它截取一个复正弦序列exp(jn/8).解:建模:矩形序列可看成两个阶跃序列之差。用MATLAB逻辑关系产生矩形序列x2(n)。而用它截取任何序列相当于元素群相乘x2.*x,也称为加窗运算。序列的合成和截取就是相加和相乘。,12,结果显示,13,例7.2 序列的合成和截取,用例6.13的结果编写产生矩形序列RN(n)的程序。序列起点为n0,矩形序列起点为n1,长度为N(n0,n1,N由键盘输入)。并
5、用它截取一个复正弦序列exp(jn/8).解:建模:矩形序列可看成两个阶跃序列之差。用MATLAB逻辑关系产生矩形序列x2(n)。而用它截取任何序列相当于元素群相乘x2.*x,也称为加窗运算。序列的合成和截取就是相加和相乘。,14,程序要点,n=n0:n1+N+5;%生成自变量数组u=(n-n1)=0;%产生单位阶跃序列(u(n-n1))x1=(n-n1)=0-(n-n1-N)=0%用阶跃序列之差产生矩形序列x2=(n=n1)%对复正弦序列加矩形窗(元素群乘),15,程序显示结果,16,例7.3 序列的移位和周期延拓,已知,利用MATLAB生成并图示 表示x(n)以8为周期的延拓)和解:方法1
6、,利用矩阵乘法和冒号运算 x=1 2 3 4;y=x*ones(1,3);方法2,采用求余函数mod,y=x(mod(n,M)+1)可实现对x(n)以M为周期的周期延拓。加1是因为MATLAB向量下标只能从1开始,,17,程序实现分析,构造x(n)x1=(0.8).n;x2=(n=0)end,18,周期化实现,方法1:xc=xn(mod(n,8)+1);%产生 x(n)的周期延拓 xcm=xn(mod(n-m,8)+1);%产生 x(n)移位后的周期延拓,19,周期化实现,方法2x=1 2 3 4;y=x*ones(1,3);y=1 1 1 2 2 2 3 3 3 4 4 4y1=y(:);%
7、1 2 3 4 1 2 3 4 1 2 3 4,20,程序结果,21,例7.6 离散序列的卷积计算,给出两个序列 和,计算其卷积y(n),并图示各输入输出序列。解:在例6.4中,已经给出了直接调用MATLAB的卷积函数conv的方法,也给出了自编卷积计算程序的方法,要注意的是本例时间变量的设定和移位方法。在本例中,设定n为从零开始,向量x和h的长度分别为Nx=20和Nh=10;结果向量y的长度为length(y)=Nx+Nh-1。,22,程序要点,x1=(0.9).n;%x1(n)%产生x2(n)=x1(n-m)x2=zeros(1,Nx+m);for k=m+1:m+Nx x2(k)=x1(
8、k-m);endnh=0:Nh-1;h1=ones(1,Nh);%h1(n)h2=h1;%h2(n)y1=conv(x1,h1);%y1(n)y2=conv(x2,h2);%y2(n)Ny1=length(y1);%y1(n)长度Ny2=length(y2);%y2(n)长度,23,程序显示结果,24,例7.4 离散系统对信号的响应,本题给定6阶低通数字滤波器的系统函数,求它在下列输入序列x(n)下的输出序列y(n)。解:本题的计算原理见例6.14,在这里用工具箱函数filter来解。如果已知系统函数H(z)=B(z)/A(z),则filter函数可求出系统对输入信号x(n)的响应y(n)。y
9、=filter(B,A,x)由差分方程可得到H(z)的分子和分母多项式系数向量A和B,再给出输入向量x即可。,系统分析,25,程序要点,%设定系统参数A,BB=0.0003738*conv(1,1,conv(1,1,conv(1,1,conv(1,1,conv(1,1,1,1)A=conv(1,-1.2686,0.7051,conv(1,-1.0106,0.3583,1,-0.9044,0.2155)x1=n=0;%产生输入信号x1(n)y1=filter(B,A,x1);%对x1(n)的响应x2=(n-m)=0;%产生输入信号x2(n)y2=filter(B,A,x2);%对x2(n)的响应
10、x3=n=0;%产生输入信号x3(n)y3=filter(B,A,x3);%对x3(n)的响应x4=(n=0)%对x5(n)的响应,26,显示结果,27,例7.5 系统线性性质验证,设系统差分方程为y(n)=x(n)+0.8y(n-1)要求用程序验证系统的线性性质。解:产生两种输入序列,分别乘以常数后1。分别激励系统,再求输出之和;2。先相加,再激励系统求输出;对两个结果进行比较,方法是求它们之差,按误差的绝对值是否极小进行判断。,28,程序要点,B=1;A=1,-0.8;x1=0.8.n;%产生输入信号x1(n)x=(n=0)%y(n)=5y1(n)+3y2(n),29,程序显示结果,30,
11、二、离散时间信号与系统频域分析,31,包含内容,Z变换序列z变换与逆变换7.7Z反变换法求解系统响应7.8离散时间傅里叶变换7.9离散傅里叶变换7.15系统频域响应7.12,7.13,32,(1)序列的正反Z变换,其中,符号表示取z变换,z是复变量。相应地,单边z变换定义为:,Z变换与其逆变换,33,MATLAB符号数学工具箱提供了计算离散时间信号单边z变换的函数ztrans和z反变换函数iztrans,其语句格式分别为,Z=ztrans(x)x=iztrans(z),上式中的x和Z分别为时域表达式和z域表达式的符号表示,可通过sym函数来定义。,MATLAB实现-方法1(符号数学工具箱),3
12、4,【例1】试用ztrans函数求下列函数的z变换。,x=sym(an*cos(pi*n);Z=ztrans(x);simplify(Z)ans=z/(z+a),35,【例2】试用iztrans函数求下列函数的z反变换。,Z=sym(8*z-19)/(z2-5*z+6);x=iztrans(Z);simplify(x)ans=-19/6*charfcn0(n)+5*3(n-1)+3*2(n-1)-19/6*charfcn0(n)+5*3(n-1)+3*2(n-1)charfcn0(n)是函数在MATLAB符号工具箱中的表示,反变换后的函数形式为:,36,例7.14 用符号运算工具箱解z变换,解
13、:无限长度时间序列的z变换和逆z变换都属于符号运算的范围。MATLAB的symbolic(符号运算)工具箱已提供了这种函数。如果读者已在计算机上安装了这个工具箱,可以键入以下程序。MATLAB程序q714.m 其特点是程序的开始要指定符号自变量syms z n a N w0%规定z,n,a为符号变量,37,程序分析:,syms z n aN w0%规定z,n,a为符号变量y1=an;%给出y的表示式Y1=ztrans(y1)%求y的z变换X1=-3*z-1/(2-5*z-1+2*z-2);%给出X的表示式x1=iztrans(X1)%求X的逆Z变换simplify(x);%可显示变换后表达式的
14、形式,38,如果信号的z域表示式是有理函数,进行z反变换的另一个方法是对进行部分分式展开,然后求各简单分式的z反变换.如果X(z)的有理分式表示为:,MATLAB实现-方法2(residuez函数实现反变换),39,MATLAB信号处理工具箱提供了一个对进行部分分式展开的函数residuez,其语句格式为:R,P,K=residuez(B,A)其中,B,A分别表示X(z)的分子与分母多项式的系数向量,分子与分母多项式按照z-1升幂排列。R为部分分式的系数向量;P为极点向量;K为多项式的系数。若X(z)为有理真分式,则K为零。,40,【例1】试用MATLAB命令进行部分分式展开,并求出其z反变换
15、。,解:MATLAB源程序为B=18;A=18,3,-4,-1;R,P,K=residuez(B,A)R=0.3600 0.2400 0.4000,41,P=0.5000-0.3333-0.3333K=,从运行结果可知,,表示系统有一个二重极点。所以,X(z)的部分分式展开为,42,教材中求z的逆变换的方法,对于z变换分式可以用部分分式法或长除法求其反变换。用函数residuez可以求出它的极点留数分解其中r,p,k=residuez(B,A)其反变换为:,43,注意几点:,r,p,k=residuez(B,A),A首项不能为零,即分母z最高次项不能为0k只有当分式为假分式时会有值,即对应冲激
16、序列部分(FIR);真分式,值为零还有一些细节需要处理:,44,例7.7 有限序列的z和逆z变换,两序列x1=1,2,3,n1=-1:1 及x2=2,4,3,5,n2=-2:1,求出x1与x2及其卷积x的z变换。解:其z变换可写成两个多项式乘积可用conv函数来求得。n数组要自己判别。n的起点ns=ns1+ns2=3,终点nf=nf1+nf2=2。n=ns:nf。由x和n即可得出X(z)。,45,程序分析,x1=1,2,3;ns1=-1;%设定x1和ns1nf1=ns1+length(x1)-1;%nf1可以算出x2=2,4,3,5;ns2=-2;%设定x2和ns2nf2=ns1+length
17、(x1)-1;%nf2可以算出x=conv(x1,x2)%求出xn=(ns1+ns2):(nf1+nf2)%求出n,46,47,例7.8 求z多项式分式的逆变换,设系统函数为,输入例7.7中的x2信号,用z变换计算输出y(n)解:由例7.7可知,故Y(z)=X(z)W(z)=其中nsy=分母分子中z的最高幂次之差。调用 r,p,k=residuez(B,A),可由B,A求出r,p,k,进而求逆z变换,得,48,例7.8 z多项式分式逆变换(续),由程序算出nsy=-1,留数、极点分别为r=-57.7581 和 204.7581p=0.7791 和 0.3209k=-150-30代入得,49,Z
18、反变换法求解系统输出(编程实现),Y(z)=X(z)W(z)x=2,4,3,5;nsx=-2;%输入序列及初始时间nfx=nsx+length(x)-1;%计算序列终止时间Bw=-3;nsbw=-1;%系统函数的分子系数,及z的最高次数Aw=2,-2.2,0.5;nsaw=0;%系统函数的分母系数,及z的最高次数B=conv(-3,x);%输入与分子z变换的多项式乘积A=Aw;%分母不变y(n)=IZTY(Z)r,p,k=residuez(B,A)%求留数r,极点p及直接项knf=input(终点时间nf=);%要求键入终点时间n=min(nsx,nsy):nf;%生成总时间数组%求无限序列y
19、i和直接序列ydyi=(r(1)*p(1).(n-nsy)+r(2)*p(2).(n-nsy).*stepseq(nsy,n(1),nf);yd=k(1)*impseq(nsy,n(1),nf)+k(2)*impseq(-1-nsy,n(1),nf);y=yi+yd;,50,另外一种方法(filter函数):,filter(B,A,x),51,例7.9 离散时间傅里叶变换,取周期的正弦信号,作8点采样,求它的连续频谱。然后对该信号进行N个周期延拓,再求它的连续频谱。把N无限增大,比较分析其结果。解:先求离散傅立叶变换的MATLAB子程序最后得到X=x*exp(-j*w*n)。有了子程序,本例就
20、没有什么难度了。,52,DTFT程序:,function X=dtft(x,w)%计算离散时间傅立叶变换%X=dtft(x,n,w),%X=在w频率点上的DTFT数组,%x=沿n的有限长度序列,%n=样本位置向量%w=频率点位置向量n=1:length(x);ewn=exp(-n*w*i);X=x*ewn;,53,正弦信号x0的DTFT变换,x0=sin(2*pi*1:8/8)*5;%x0是8点行向量dt=2*pi/8;w=linspace(-2*pi,2*pi,1000)/dt;%w是1000点行向量X0=dtft(x0,w)*dt;%求得频率响应X0,54,正弦信号延拓N个周期后,DTFT
21、,N=4;%延拓周期数x1=reshape(x0*ones(1,N),1,N*length(x0);%延拓后的时域信号x1X1=dtft(x1,w)*dt;%求x1的频率响应X1%延拓100次后%x1=reshape(x0*ones(1,100),1,100*length(x0);%延拓后的时域信号x1%X1=dtft(x1,w)/100*dt;%求x1的频率响应X1,55,重复无穷次,disp(重复无穷次的八点信号的离散时间傅立叶变换-傅立叶级数)pause,X2=fft(x0*dt);%离散傅立叶变换w1=2*pi*0:length(x0)-1/length(x0);%离散频点向量subp
22、lot(3,1,3),stem(-w1,w1,abs(X2),abs(X2),grid,axis(min(w),max(w),0,max(abs(X2),grid,56,例7.9 离散时间傅里叶变换2,程序运行结果执行程序q709并按提示键入N=4,所得图形如图7.10所示。N取得愈大,其峰值愈大,宽度愈窄。当N取得很大时,会出现内存不足的问题,这是用矩阵乘法做傅里叶变换的缺点。另外,因为那时峰值点处的宽度很窄,也会出现所选频点对不上峰值点的问题。所以对于N无限增大的情况,必须用fft函数来求。这时用连续频谱也没有意义了。这里用同样的横坐标把几种频谱进行对比,使读者更好地理解其关系。,57,程
23、序显示结果:,58,例7.10 时域采样频率与频谱混叠,分别以采样频率fs=1000Hz,400Hz和200Hz对xa(t)进行等间隔采样,计算并图示三种采样频率下的采样信号及其幅频特性解:程序分别设定4种采样频率fs=10kHz,1kHz,400Hz和200Hz,对xa(t)进行采样,得到采样序列xa(t),xa1(n),xa2(n),xa3(n),画出其幅度频谱。采样时间区间均为0.1秒。为了便于比较,画出了幅度归一化的幅频曲线,如图7.11所示。,59,例7.10 采样频率与频谱混叠(续),由于由以上关系式可见,采样信号的频谱函数是原模拟信号频谱函数的周期延拓,延拓周期为2/T。如果以频
24、率f为自变量(=2f),则以采样频率fs=1/T为延拓周期。对频带限于fc的模拟信号xa(t),只有当fs2fc时,采样后 才不会发生频谱混叠失真。这就是著名的采样定理,程序要点:,t=0:1/fs:0.1;%fs代不同的取样频率 xa=exp(-a*t).*sin(b*t);k=0:511;f=fs*k/512;%由wk=2k/512=2fT求得模拟频率fXa=dtft(xa,2*pi*k/512);%近似模拟信号频谱,60,结果1,61,结果2,62,63,例7.12 梳状滤波器零极点和幅特性,梳状滤波器系统函数有如下两种类型。FIR型:IIR型:freqz 数字滤波器频率特性计算和绘制函
25、数 zplane H(z)的零-极点图绘制。解:调用函数freqz和zplane 很容易写出程序q712.m。,64,程序分析,freqzfreqz(b,a,w)zplane,65,频率响应,b=1,0,0,0,0,0,0,0,-1;a0=1;a1=1,0,0,0,0,0,0,0,-(0.8)8;a2=1,0,0,0,0,0,0,0,-(0.9)8;a3=1,0,0,0,0,0,0,0,-(0.98)8;H,w=freqz(b,a0);H1,w1=freqz(b,a1);H2,w2=freqz(b,a2);H3,w3=freqz(b,a3);,66,零极点及绘图,subplot(2,2,1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理论 yyxMATLAB 数字信号 处理 中的 应用 讲课
链接地址:https://www.31ppt.com/p-3956126.html