2022年数字信号处理基本知识点Matlab实现.pdf





《2022年数字信号处理基本知识点Matlab实现.pdf》由会员分享,可在线阅读,更多相关《2022年数字信号处理基本知识点Matlab实现.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字信号处理(第二版)绪论1.4 MATLAB 在信号处理中的应用简介MATLAB是美国 Mathworks 公司于 1984 年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。MATLAB软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic),数据图形文字统一处理功能(Notebook)和建模仿真可视化功能( Simulink )。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性
2、强。目前, Mathworks 公司已推出30 多个应用工具箱。MATLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、 以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。2.10 离散时间信号与系统的Matlab 表示2.10.1 离散时间信号的表示和运算1、基本序列的Matlab 表示单位采样序列在 MATLAB 中,单位采样序列可以通过编写以下的DTimpulse.m 文件来实现,即function y=DTimpulse (n) y=(n=0); %当参数为 0 时
3、冲激为1,否则为 0 调用该函数时n 必须为整数或整数向量。单位阶跃序列在 MATLAB 中,单位阶跃序列可以通过编写DTu.m 文件来实现,即function y=DTu (n) y=n=0; %当参数为非负时输出1调用该函数时n 必须为整数或整数向量。矩形序列用 MATLAB 表示矩形序列可根据公式( )( )()NRnu nu nN并利用 DTu 函数生成,即function y=DTR(n,N) y=DTu(n)-DTu(n-N); 调用该函数时n 必须为整数或整数向量,N 必须为整数。实指数序列用 MATLAB 表示实指数序列( )( ),nx na u nnN aR,即精品资料 -
4、 - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 29 页 - - - - - - - - - - n=0:N-1; x=a.n; 复指数序列用 MATLAB 表示实指数序列0()0( ),jnx nenNR,即n=0:N-1; x=exp(sigma+j*w0)*n); 正弦序列用 MATLAB 表示实指数序列00( )sin(), ,x nAnnN AR,即n=0:N-1; x=A*sin(w0*n+phi); 2、基本序列运算的Matlab 表示序列相加用 MATLAB 实现序列12( )( )( )
5、y nx nxn,即y=x1+x2; 当 x1 和 x2 序列长度不等或其起始位置不对应时,序列相加前需要调整x1 和 x2,使之具有相同长度并具有相同起始位置。序列相乘用 MATLAB 实现序列12( )( )*( )y nx nx n,即y=x1.*x2; 当 x1 和 x2 序列长度不等或其起始位置不对应时,序列相乘前需要调整x1 和 x2,使之具有相同长度并具有相同起始位置。此处需要利用Matlab 中的点乘( .*)实现。序列反转用 MATLAB 实现序列( )()y nxn,即y=flipr(x); 序列移位用 MATLAB 实现序列0( )()y nx nn,即n=-N:N; n
6、1=n-n0; subplot(211);stem(n,x, fill ); subplot(211);stem(n1,x, fill ); 2.10.2 离散时间信号的频域变换1、Matlab 实现离散时间傅里叶变换(DTFT )10()( )NjjnnX ex n e序列的离散时间傅里叶变换(DTFT )由于频率为连续实数变量,所以严格的讲其在精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 29 页 - - - - - - - - - - Matlab 下是无法实现的,但是为了说明DTFT
7、 在 Matlab 下的运算过程,这里将其频率变量设置为频率向量0121M,只计算频率向量指定的有限个频率点上的频谱结果。设序列(0)(1)(1)xxxxN,0121nN,0121M,则 DTFT 的矩阵表达形式为:011011011011000111(1)(1)(1)()()()(0)(1)(1)MMMMjjjjjjjjjjNjNjNX eX eX eeeeeeexxx Neee其中:011011012101100001111()2(1)(1)(1)1MMMMjjjjjjjjNjNjNNDTFT 在 Matlab 中可以利用矩阵乘法的形式表示如下:exp ()TXxjn【例 2-1】 用 M
8、atlab 实现5( )( )x nR n的离散时间傅里叶变换。解: DTFT 的 MA TLAB 源程序为:N=5; n=0:N-1; k=-200:200; w=(4*2*pi/400)*k; x= DTR(n,N) DTFT_X=x*exp(-j*(n*w); magX=abs(DTFT_X); plot(w/pi,magX); xlabel(w/pi); ylabel(|X(jw)|); title(x(n) 的离散时间傅里叶变换的幅频响应曲线); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第
9、3 页,共 29 页 - - - - - - - - - - 图 2-1 离散时间傅里叶变换幅度响应曲线2、Matlab 实现 Z 变换Z 正反变换的符号表示MATLAB符号数学工具箱提供了计算离散时间信号单边Z 变换的函数ztrans 和 Z 反变换函数 iztrans,其语句格式分别为z=ztrans(x) x=iztrans(z) 上式中的 x 和 z 分别为时域表达式和z 域表达式的符号表示,可通过sym 函数来定义。【例 2-2】 试用 ztrans 函数求下列函数的z 变换。(1))()cos()(nunanxn;(2))()2(2)(11nunxnn。解: (1)Z 变换 MAT
10、LAB源程序为x=sym(an*cos(pi*n); Z=ztrans(x); simplify(Z) ans= z/(z+a) (2)Z 变换 MATLAB源程序为x=sym(2(n-1)-(-2)(n-1); Z=ztrans(x); simplify(Z) ans= z2/(z-2)/(z+2) 【例 2-3】 试用 iztrans 函数求下列函数的Z 反变换。(1)65198)(2zzzzX(2)32)2)(1()12112()(zzzzzzX解: (1)Z 反变换 MA TLAB 源程序为Z=sym(8*z-19)/(z2-5*z+6); x=iztrans(Z); 精品资料 - -
11、 - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 29 页 - - - - - - - - - - simplify(x) ans= -19/6*charfcn0(n)+5*3(n-1)+3*2(n-1)其中, charfcn0(n) 是)(n函数在 MA TLAB 符号工具箱中的表示,反变换后的函数形式为)()2335()(619)(11nunnxnn。(2)Z 反变换 MATLAB 源程序为Z=sym(z*(2*z2-11*z+12)/(z-1)/(z-2)3); x=iztrans(Z); simplif
12、y(x) ans= -3+3*2n-1/4*2n*n-1/4*2n*n2 其函数形式为)()241241233()(2nunnnxnnn。Z 反变换的留数表示如果信号的z 域表示式)(zX是有理函数,进行z 反变换的另一个方法是对)(zX进行部分分式展开,然后求各简单分式的z 反变换。设)(zX的有理分式表示为)()(1)(221122110zAzBzazazazbzbzbbzXnnmm(4-3)MATLAB信号处理工具箱提供了一个对)(zX进行部分分式展开的函数residuez,其语句格式为R,P,K=residuez(B,A) 其中, B,A 分别表示)(zX的分子与分母多项式的系数向量;
13、R 为部分分式的系数向量;P为极点向量; K 为多项式的系数。若)(zX为有理真分式,则K 为零。【例 2-4】 试用 MATLAB 命令对函数321431818)(zzzzX进行部分分式展开,并求出其Z 反变换。解: MATLAB源程序为B=18; A=18,3,-4,-1; R,P,K=residuez(B,A) R= 0.3600 0.2400 0.4000 P= 0.5000 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 29 页 - - - - - - - - - - -0.333
14、3 -0.3333 K= 从运行结果可知,32pp,表示系统有一个二重极点。所以,)(zX的部分分式展开为2111)3330.314.03333.0124.05 .0136.0)(zzzzX(因此,其 Z 反变换为)()3333.0)(1(4. 0)3333.0(24.0)5.0(36.0)(nunnxnnnZ 变换的零极点分析离散时间系统的系统函数定义为系统零状态响应的Z 变换与激励的Z 变换之比,即)()()(zXzYzH(4-4)如果系统函数)(zH的有理函数表示式为11211121)(nnnnmmmmazazazabzbzbzbzH(4-5)那么,在 MATLAB中系统函数的零极点就可
15、通过函数roots 得到,也可借助函数tf2zp 得到,tf2zp 的语句格式为Z,P,K=tf2zp(B,A) 其中, B 与 A 分别表示)(zH的分子与分母多项式的系数向量。它的作用是将)(zH的有理分式表示式转换为零极点增益形式,即)()()()()(2121nmpzpzpzzzzzzzkzH(4-6)若要获得系统函数)(zH的零极点分布图,可直接应用zplane 函数,其语句格式为zplane(B,A) 其中,B 与 A 分别表示)(zH的分子和分母多项式的系数向量。它的作用是在Z 平面上画出单位圆、零点与极点。【例 2-5】 已知某离散因果LTI 系统的系统函数为16.032.0)
16、(2zzzzH试用 MATLAB命令求该系统的零极点并绘制其零极点分布图。解:用 tf2zp 函数求系统的零极点,MATLAB源程序为精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 29 页 - - - - - - - - - - B=1,0.32; A=1,1,0.16; R,P,K=tf2zp(B,A) zplane(B,A),grid on; legend(零点 ,极点 ); title( 零极点分布图 ); 零极点计算结果如下所示。R= -0.3200 P= -0.8000 -0.20
17、00 K= 1 零极点分布如图2-2 所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。图 2-2 系统零极点分布图2.10.3 离散时间系统的表示1、离散时间系统的时域表示方法离散时间LTI 系统在时域中常常可通过线性常系数差分方程和单位脉冲响应两种方式描述。线性常系数差分方程MjjNiijnxbinya00)()(其中,ia(0i,1,, , N)和jb(0j,1, , , M)为实常数。MATLAB中函数 filter 可对差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter 的语句格式为y=filter(b,a,x) 精品资料 - - - 欢迎下载 - -
18、 - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 29 页 - - - - - - - - - - 其中, x 为输入的离散序列;y 为输出的离散序列;y 的长度与 x 的长度一样; b 与 a 分别为差分方程右端与左端的系数向量。【例 2-6】 已知某 LTI 系统的差分方程为)1(2)()2(2)1(4)(3nxnxnynyny用 MATLAB 命令绘出当输入激励信号为)()2/1()(nunxn时,该系统的零状态响应。解: MATLAB源程序为a=3 -4 2; b=1 2; n=0:30; x=(1/2).n; y=filt
19、er(b,a,x); stem(n,y,fill),grid on xlabel(n),title( 系统响应 y(n) 程序运行结果如图2-3 所示。图 2-3 系统零状态响应单位脉冲响应系统的单位脉冲响应定义为系统在)(n激励下系统的零状态响应,用)(nh表示。MATLAB求解单位脉冲响应可利用函数filter , 并将激励设为前面所定义的DTimpulse 函数。例如用 filter 函数求解例2-6 中系统的单位脉冲响应的MA TLAB 程序为a=3 -4 2; b=1 2; n=0:30; x=impDT(n); h=filter(b,a,x); stem(n,h,fill),gri
20、d on xlabel(n),title( 利用 filter 函数求解的系统单位脉冲响应h(n) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 29 页 - - - - - - - - - - MATLAB另一种求单位脉冲响应的方法是利用控制系统工具箱提供的函数impz 来实现。 impz 函数的常用语句格式为impz(b,a,N) 其中,参数 N 通常为正整数,代表计算单位脉冲响应的样值个数。例如用impz 函数求解例2-6 中系统的单位脉冲响应的MATLAB 程序为a=3 -4 2;
21、b=1 2; n=0:30; impz(b,a,30),grid on xlabel(n),title( 利用 impz 函数求解的系统单位脉冲响应h(n) 单位脉冲响应的因果稳定性判断单位脉冲响应)(nh作为时域中描述系统的一种方法,可以用它来分析系统的因果性和稳定性。系统的因果性可以直接根据)(nh满足因果关系的成立条件直接进行判定;系统的稳定性一般不太容易直接检查系统的单位脉冲响应是否满足绝对可和,可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以判定系统的稳定性。这种判定方式的思想是,如果系统稳定,信号加入系统后,系统输出的开始一段成为暂态响应,随
22、着n 的加大,幅度趋于稳定,达到稳态输出。【例 2-7】设一谐振器的差分方程为00( )1.8237 (1)0.9801 (2)( )(2)y ny ny nb x nb x n其中01100.49b,谐振器的谐振频率为0.4rad。试用 Matlab 实验方法检查系统是否稳定?解: Matlab 源程序为N=400; b0=1/100.49; n=0:N-1; B=b0,0,-b0; A=1,-1.8237,0.9801; x=DTu(n); y=filter(B,A,x); subplot(211); stem(n,x,fill); title( 输入信号 -单位阶跃序列u(n); axi
23、s(0,N,0,1.2); subplot(212); stem(n,y,fill); title( 输出信号 -u(n) 系统响应 ); axis(0,N,-0.05,0.05); 程序执行结果如图2-4 所示,可见,当此系统输入单位阶跃序列后,系统的响应呈现出幅值递减状态,可以预见当n时,幅值趋近于一个常数(零常数),故而可以判定此系统稳定。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 29 页 - - - - - - - - - - 图 2-4 输入单位阶跃序列的系统响应2、离散时间系
24、统的频域表示方法离散时间系统的频率响应定义为)(|)(|)(jjjeeHeH( -7)其中,|)(|jeH称为离散时间系统的幅频响应,在Matlab 中利用函数abs对频率响应进行求解;)(称为离散时间系统的相频响应,在Matlab 中利用函数angle 对频率响应进行求解。由于)(jeH是以2为周期的周期函数,故只需分析)(jeH在一个周期范围内的特征便可分析出系统的整个频率特性。MATLAB为求解离散时间系统频响特性的提供了函数freqz,调用freqz 的格式主要有两种。第一种方式为:H,w=freqz(B,A,N) 其中, B 与 A 分别表示)(zH的分子和分母多项式的系数向量;N
25、为正整数, 默认值为512;返回值w 包含,0范围内的N 个频率等分点;返回值H 则是离散时间系统频率响应)(jeH在0范围内 N 个频率处的值。第二种方式为:H,w=freqz(B,A,N, whole ) 与第一种方式不同之处在于角频率的范围由,0扩展到2,0。【例 2-7】 用 MATLAB命令绘制系统8109.056.19028.096.0)(22zzzzzH的频率响应曲线。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 29 页 - - - - - - - - - - 解: MAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 数字信号 处理 基本 知识点 Matlab 实现

限制150内