当前位置:文档之家› 数字信号处理基本知识点Matlab实现

数字信号处理基本知识点Matlab实现

数字信号处理(第二版)绪论1.4 MATLAB 在信号处理中的应用简介MATLAB 是美国Mathworks 公司于1984年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理、系统仿真和图形显示于一体,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。

MATLAB 软件包括五大通用功能:数值计算功能(Numeric ),符号运算功能(Symbolic );数据可视化功能(Graphic ),数据图形文字统一处理功能(Notebook )和建模仿真可视化功能(Simulink )。

该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。

目前,Mathworks 公司已推出30多个应用工具箱。

MA TLAB 在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

2.10 离散时间信号与系统的Matlab 表示 2.10.1 离散时间信号的表示和运算1、基本序列的Matlab 表示 单位采样序列在MA TLAB 中,单位采样序列可以通过编写以下的DTimpulse .m 文件来实现,即function y=DTimpulse (n)y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。

单位阶跃序列在MA TLAB 中,单位阶跃序列可以通过编写DTu .m 文件来实现,即function y=DTu (n)y=n>=0; %当参数为非负时输出1 调用该函数时n 必须为整数或整数向量。

矩形序列用MA TLAB 表示矩形序列可根据公式()()()N R n u n u n N =--并利用DTu 函数生成,即 function y=DTR(n,N)y=DTu(n)-DTu(n-N);调用该函数时n 必须为整数或整数向量,N 必须为整数。

实指数序列用MA TLAB 表示实指数序列()(),nx n a u n n N a R =∈∈,即n=0:N-1; x=a.^n;复指数序列用MA TLAB 表示实指数序列0()0(),,j nx n en N R σωσω+=∈∈,即n=0:N-1;x=exp((sigma+j*w0)*n);正弦序列用MA TLAB 表示实指数序列00()sin(),,,x n A n n N A R ωϕωϕ=+∈∈,即n=0:N-1;x=A*sin(w0*n+phi);2、基本序列运算的Matlab 表示 序列相加用MA TLAB 实现序列12()()()y n x n x n =+,即y=x1+x2;当x1和x2序列长度不等或其起始位置不对应时,序列相加前需要调整x1和x2,使之具有相同长度并具有相同起始位置。

序列相乘用MA TLAB 实现序列12()()*()y n x n x n =,即y=x1.*x2;当x1和x2序列长度不等或其起始位置不对应时,序列相乘前需要调整x1和x2,使之具有相同长度并具有相同起始位置。

此处需要利用Matlab 中的点乘(.*)实现。

序列反转用MA TLAB 实现序列()()y n x n =-,即y=flipr(x);序列移位用MA TLAB 实现序列0()()y n x n n =-,即n=-N:N; n1=n-n0;subplot(211);stem(n,x,’ fill ’); subplot(211);stem(n1,x,’ fill ’);2.10.2 离散时间信号的频域变换1、Matlab 实现离散时间傅里叶变换(DTFT )1()()N j j n n X e x n e ωω--==∑序列的离散时间傅里叶变换(DTFT )由于频率为连续实数变量,所以严格的讲其在Matlab 下是无法实现的,但是为了说明DTFT 在Matlab 下的运算过程,这里将其频率变量设置为频率向量[]0121M ωωωωω-=,只计算频率向量指定的有限个频率点上的频谱结果。

设序列[](0)(1)(1)x x x x N=- ,[]0121n N =-,[]0121M ωωωωω-=,则DTFT 的矩阵表达形式为:[]01101101101100111(1)(1)(1)()()()(0)(1)(1)M M M M j j j j j j j j j j N j N j N X e X e X e e e e ee e x x x N ee e ωωωωωωωωωωωω----------------⎡⎤⎣⎦⎡⎤⎢⎥⎢⎥=-⎢⎥⎢⎥⎣⎦其中:[]011011012101100001111()2(1)(1)(1)1M M M M j j j j j j j j N j N j N N ωωωωωωωωωωωωω----⎡⎤---⎡⎤⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥------⎣⎦⎢⎥-⎣⎦DTFT 在Matlab 中可以利用矩阵乘法的形式表示如下:exp ()T X x j n ω⎡⎤=⋅-⋅⋅⎣⎦【例2-1】 用Matlab 实现5()()x n R 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)的离散时间傅里叶变换的幅频响应曲线');图 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()(n u n a n x nπ=; (2))(])2(2[)(11n u n x n n ----=。

解:(1)Z 变换MATLAB 源程序为x=sym('a^n*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=z^2/(z-2)/(z+2)【例2-3】 试用iztrans 函数求下列函数的Z 反变换。

(1)65198)(2+--=z z z z X (2)32)2)(1()12112()(--+-=z z z z z z X解:(1)Z 反变换MA TLAB 源程序为Z=sym('(8*z-19)/(z^2-5*z+6)'); x=iztrans(Z);ans=-19/6*charfcn[0](n)+5*3^(n-1)+3*2^(n-1)其中,charfcn[0](n)是)(n δ函数在MA TLAB 符号工具箱中的表示,反变换后的函数形式为)()2335()(619)(11n u n n x n n --⨯+⨯+-=δ。

(2)Z 反变换MA TLAB 源程序为Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'); x=iztrans(Z); simplify(x) ans=-3+3*2^n-1/4*2^n*n-1/4*2^n*n^2其函数形式为)()241241233()(2n u n n n x nn n--⨯+-=。

Z 反变换的留数表示如果信号的z 域表示式)(z X 是有理函数,进行z 反变换的另一个方法是对)(z X 进行部分分式展开,然后求各简单分式的z 反变换。

设)(z X 的有理分式表示为)()(1)(221122110z A z B za z a z a zb z b z b b z X nn m m =++++++++=------ (4-3) MATLAB 信号处理工具箱提供了一个对)(z X 进行部分分式展开的函数residuez ,其语句格式为[R,P,K]=residuez(B,A)其中,B ,A 分别表示)(z X 的分子与分母多项式的系数向量;R 为部分分式的系数向量;P 为极点向量;K 为多项式的系数。

若)(z X 为有理真分式,则K 为零。

【例2-4】 试用MA TLAB 命令对函数321431818)(-----+=z z z z X 进行部分分式展开,并求出其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-0.3333 K= []从运行结果可知,32p p =,表示系统有一个二重极点。

所以,)(z X 的部分分式展开为2111)3330.314.03333.0124.05.0136.0)(---++++-=z z z z X ( 因此,其Z 反变换为)(])3333.0)(1(4.0)3333.0(24.0)5.0(36.0[)(n u n n x n n n -++-⨯+⨯=Z 变换的零极点分析离散时间系统的系统函数定义为系统零状态响应的Z 变换与激励的Z 变换之比,即)()()(z X z Y z H =(4-4) 如果系统函数)(z H 的有理函数表示式为11211121)(+-+-++++++++=n n n n m m m m a z a z a z a b z b z b z b z H (4-5) 那么,在MATLAB 中系统函数的零极点就可通过函数roots 得到,也可借助函数tf2zp 得到,tf2zp 的语句格式为[Z,P,K]=tf2zp(B,A) 其中,B 与A 分别表示)(z H 的分子与分母多项式的系数向量。

它的作用是将)(z H 的有理分式表示式转换为零极点增益形式,即)())(()())(()(2121n m p z p z p z z z z z z z kz H ------= (4-6)若要获得系统函数)(z H 的零极点分布图,可直接应用zplane 函数,其语句格式为zplane(B,A)其中,B 与A 分别表示)(z H 的分子和分母多项式的系数向量。

相关主题