您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > MATLAB在信号与系统中的应用
MATLAB在信号与系统中的应用7.1连续信号和系统•7.1.1连续信号的表示和运算•1.向量表示法:•t=-10:1.5:10•F=sin(t)./t•plot(t,f)•程序运行结果:•2.符号运算表示法•如果信号可以用一个符号表达式来表示它,则可用ezplot命令绘制出信号的波形。•例:•f='sin(pi/4*t)';•ezplot(f,[-16,16])•用MATLAB实现连续信号的可视化:•(1)单位阶跃信号•单位阶跃函数的数学表达式MATLAB程序为:t0=0;tf=5;dt=0.05;t1=1;%定义时间的起始值,步长t=[t0:dt:tf];st=length(t);n1=floor((t1-t0)/dt);%求t1对应的样本序号x1=[zeros(1,n1),ones(1,st-n1)];%产生阶跃信号stairs(t,x1),gridon%绘图axis([0,5,0,1.1])%为使方波顶部避开图框,改变图框坐标10)(t00tt阶跃信号注意:stairs命令用来显示连续信号波形中的不连续点;要使波形光滑则用plot命令。•(2)单位冲激函数:可以看作是宽度为△(程序中用dt表示),幅度为1/△的矩形脉冲,即11ttt01)()(11tttx其余表示在t=t1处的冲击MATLAB程序为:t0=0;tf=5;dt=0.05;t1=1;t=[t0:dt:tf];st=length(t);n1=floor((t1-t0)/dt);%求t1对应的样本序号x1=zeros(1,st);%把全部信号先初始化为零x1(n1)=1/dt;%给出t1处的脉冲信号stairs(t,x1),gridon%绘图axis([0,5,0,22])%使脉冲顶部避开图框,改变图框坐标程序运行结果如下:•7.1.2连续系统的冲激响应、阶跃响应及MATLAB实现描述连续系统的微分方程为:],,,[],,,,[0101bbbbaaaaMMNNMjijNiiitfbtya0)(0)()()(•则可以用向量a和b来表示该系统,即注意:在用向量表示微分方程描述的连续系统时,向量a,b的元素一定要以微分方程时间求导的降幂次序来排列,且缺项要用0来补齐。1.impulse()函数impulse()函数将绘出由向量a和b表示的连续系统在指定时间范围内的冲激响应h(t)的时域波形,并求出指定时间范围内冲激响应的数值解。•impulse()调用格式:impulse(b,a)impulse(b,a,t)impulse(b,a,t1:p:t2):t1-t2时间范围内,以时间间隔p为均匀采样冲激响应的时域波形。y=impulse(b,a,t1:p:t2):该调用格式并不绘制出系统的阶跃冲激响应的波形,而是求出其数值解。2.step()函数step()函数将绘出由向量a和b表示的连续系统的阶跃响应g(t)在制定时间范围内的波形图,并能求出其数值解。其调用格式和impulse()函数一样。•例:已知描述某连续系统的微分方程为)()(8)()(2'''tftytyty试用MATLAB绘出该系统的冲激响应和阶跃响应的波形。解:MATLAB程序如下:b=[1];a=[218];subplot(1,2,1)Impulse(b,a)subplot(1,2,2)step(b,a)程序运行结果如下图所示7.2傅里叶分析•傅里叶变换的定义•傅里叶反变换的定义dtetfjwFjwt)()(dwejwFtfjwt)()(•1.傅里叶变换的调用格式F=ifourier(f):符号函数f的fourier变换,默认返回是关于w的函数。F=ifourier(f,v):返回函数F是关于符号对象v的函数,而不是w。•注意:在调用这两个函数之前,要用sym命令对所有用到的变量进行说明。对于fourier()中的函数F,也要用符号定义符sym将它们说明为符号表达式。例:设,试画出f(t)及其幅频图MATLAB程序:symstx;x=1/2*exp(-2*t)*sym('heaviside(t)');F=fourier(x);subplot(2,1,1);ezplot(x);subplot(2,1,2);ezplot(abs(F)))(21)(2tetft程序运行结果如下图所示7.3离散信号和系统一、离散时间信号(stem())1.单位序列(单位脉冲序列)00kk10)(kMATLAB程序:•k=-10:10;•n=length(k);•f=zeros(1,n);•f(1,11)=1•stem(k,f,'filled')•axis([-10,10,0,1.5])•title('单位序列')2.单位阶跃序列00kk,1,0)(kMATLAB程序:k=-10:0;kk=1:10;n=length(k);nn=length(kk);u=zeros(1,n);uu=ones(1,nn);stem(kk,uu,'filled')holdonstem(k,u,'filled')axis([-10,10,0,1.5])title('单位阶跃序列')程序运行结果如下•二、离散系统的单位响应当输入为单位序列是离散系统产生的零状态响应称为系统的单位响应,MATLAB中求离散系统的单位响应,并绘制其时域波形的函数impz()。设描述离散系统的差分方程为MjjNiijkfbtkya00)()(impz()的调用格式:impz(b,a)impz(b,a,n)y=impz(b,a,n)其中,a,b分别为用于表示离散系统的向量,n为显示的样点数。例:已知描述某离散系统的差分方程如下:2y(k)-2y(k-1)+(k-2)=f(k)+3f(k-1)+2f(k-2)用MATLAB绘制出系统在0~100时间范围内单位响应波形。MATLAB程序:a=[2-21];b=[132];impz(b,a)7.4利用MATLAB求连续系统的响应一、线性定常连续系统可用如下所示的线性常系数为微分方程来描述MjjjNiiitfbtya0)(0)()()(lsim()函数能对上述微分方程的连续系统的响应进行仿真。lsim()函数调用格式:lsim(b,a,x,t):绘制出由向量a,b所定义的连续系统在输入为向量x,t所定义的信号时,系统的零状态响应的时域仿真波形。y=lsim(b,a,x,t):不绘制响应曲线,而是求出数值解。)(2)()()(2)(''''tftftytyty)()(2tetft例:某连续系统的微分方程为求当输入信号为时,该系统的零状态响应。MATLAB程序:a=[121];b=[12];t=0:0.5:5;x=exp(-2*t)lsim(b,a,x,t)程序运行结果如右图所示。)1()()2()1(25.0)(kfkfkykyky)(21)(tkfk二、线性定常离散系统的响应对于线性定常离散系统的响应函数为fliter()。其调用格式为:fliter(b,a,x):其中a,b是描述系统的差分方程的系数决定的表示离散系统的两个行向量,x是包含输入序列非零样值点的行向量。例:已知描述离散系统的差分方程为:且已知系统输入序列为,试用MATLAB实现下列分析过程(1)画出输入序列的时域波形(2)求出系统零状态响应在0~20区间的样值;(3)画出系统的零状态响应的波形。•解:•MATLAB程序:•a=[1-0.250.5];•b=[11];•t=0:20;•x=(1/2).^t;•y=filter(b,a,x);•subplot(2,1,1)•stem(t,x)•title('输入序列')•subplot(2,1,2)•stem(t,y)•title('输出序列')程序运行结果:7.5用MATLAB实现拉普拉斯逆变换和逆Z变换•7.5.1拉普拉斯逆变换用MATLAB函数来实现连续时间信号的拉普拉斯逆变换。NMjjjNiiiiNiscpsrpssBsAsBsF011)()()()()(令A,B分别是F(s)的分子和分母多项式构成的系数向量,则函数[r,p,k]=residue(B,A)将产生3个向量r,p,k。r:为包含F(s)的所有极点的列向量;p:为包含F(s)的部分分式展开系数的列向量;K:为包含F(s)部分分式展开的多项式项的系数cj的行向量,若M≤N,则K为空阵。例:已知连续信号的拉普拉斯变换为试用MATLAB求其拉普拉斯逆变换f(t)。MATLAB程序:a=[1040];b=[24];[rpk]=residue(b,a)程序运行结果:r=-0.5000-0.5000i-0.5000+0.5000i1.0000ssssF442)(3p=0+2.0000i0-2.0000i0k=[]abs(r)ans=0.70710.70711.0000angle(r)/pians=-0.75000.75000由上述结果可得)()432cos(21)(tttfzzH)(23)(22zzzzH•7.5.2逆Z变换例:已知某离散系统的系统函数为:试用MATLAB求该系统的单位冲击响应h(k)。解:首先利用MATLAB对进行展开,然后调用residue()函数求出部分分式展开的系数和极点,对用的MATLAB命令如下:a=[132];b=[10];[r,p,k]=residue(b,a)程序运行结果:zzH)(r=2-1p=-2-1k=[]由上述结果可得所以系统的单位冲击响应为)()1()2(2)(tkhkk1122)(zzzH
本文标题:MATLAB在信号与系统中的应用
链接地址:https://www.777doc.com/doc-2881948 .html