基于matlab理解学习连续时间系统的时域分析

    技术2022-07-17  69

    前言

    卷积积分是线性系统时域分析最基本的方法,为加深对线性系统时域分析的理解,下面先讨论卷积积分 所用matlab函数: stepfun(t,t0) 阶跃函数,t0为起点为1; conv(f1,f2) 卷积; ezplot(dslove(‘微分方程’,‘零状态’),[A,B])函数ezplot无需数据准备,可以直接画出函数的图形;ezplot(f,[A,B]):f是关于x的函数(A<x<B) 且自动将函数表达式当做标题显示 sys=tf(b,a); 传输函数,分子的系数为b,分母的系数为a; impulse(sys,t) 求其冲激响应; step(sys,t) 求其阶跃响应; y=lsim(sys,f,t,zi); 对系统输出进行仿真求其输入f的全响应,zi为初始条件 ; 1.分子分母形式:lsim(num,den,u,t); 2.传递函数形式:lsim(sys,u,t) ; 3.状态空间形式: [A B C D]=tf2ss(b,a); %将传递函数转换到状态空间表达式lsim(A,B,C,D,u,t) %然后求其响应 或者将状态空间用sys表示:sys=ss(A,B,C,D);lsim(sys,u,t) 不加zi初始条件,则是零状态响应;

    卷积

    这是卷积的表达式, 1.任意函数与冲激函数卷积等于函数本身 2.任意函数与冲激函数延迟t0卷积等于函数延迟t0 3.任意函数与阶跃函数卷积等于函数的积分 卷积的性质 1.交换律 2.分配率 3.结合律 4.时移性质 5.微积分性质 常用信号的卷积公式 例题来深入理解卷积 NO.1 用MATLAB画出门函数3[ε(t+1)–ε(t–2)]与指数函数2e–2t卷积的图形。 解:MATLAB程序如下:

    %求f1和f2的卷积 T=0.01; t1=-2:T:2; t2=0:T:3; %生成两个待卷积信号的时间向量 f1=3*(stepfun(t1,-1)-stepfun(t1,2)); f2=2*exp(-2*t2); y=conv(f1,f2); y=y*T; **%卷积运算求的是重叠区域的值相乘求积分,即是面积,所以要乘上时间间隔** t=-2:T:5; **%序列y的非零值的宽度 m+n-1 t11+t21:t12:t22** subplot(311) plot(t1,f1); axis([-2 5 min(f1) max(f1)+0.5]); title('f1') subplot(312) plot(t2,f2); axis([-2 5 min(f2) max(f2)+0.5]); title('f2') line([0,0],[0,max(f2)]); subplot(313) plot(t,y); axis([-2 5 min(y) max(y)+0.5]); title('卷积结果y')

    NO.2 画出门函数[ε(t+1)–ε(t–2)]与门函数3[ε(t)–ε(t–2)]卷积的图形。 解:MATLAB程序如下:

    %求f1和f2的卷积 T=0.01; t1=-2:T:2; t2=0:T:3; %生成两个待卷积信号的时间向量 f1=(stepfun(t1,-1)-stepfun(t1,2)); f2=3*(stepfun(t2,0)-stepfun(t2,2)); y=conv(f1,f2); y=y*T; %卷积运算求的是重叠区域的值相乘求积分,即是面积,所以要乘上时间间隔 t=-2:T:5; %序列y的非零值的宽度 m+n-1 t11+t21:t12:t22 subplot(311) plot(t1,f1); axis([-2 5 min(f1) max(f1)+0.5]); title('f1') subplot(312) plot(t2,f2); axis([-2 5 min(f2) max(f2)+0.5]); title('f2') line([0,0],[0,max(f2)]); subplot(313) plot(t,y); axis([-2 5 min(y) max(y)+0.5]); title('卷积结果y')

    NO.3 求系统零输入响应

    %求解系统的零输入响应 subplot(311); ezplot(dsolve('D2y+5*Dy+6*y=0','y(0)=1,Dy(0)=-1'),[0 8]) %函数ezplot无需数据准备,可以直接画出函数的图形,画隐函数图形很方便 % ezplot(f,[A,B]):f是关于x的函数(A<x<B) 且自动将函数表达式当做标题显示 axis auto subplot(312); ezplot(dsolve('D2y+2*Dy+5*y=0','y(0)=2,Dy(0)=-2'),[0 8]) axis auto subplot(313); ezplot(dsolve('D3y+4*D2y+5*Dy+2*y=0','y(0)=0,Dy(0)=-1,D2y(0)=-1'),[0 8]) axis auto

    NO.4 已知系统为i’’(t)+5i’(t)+6i(t)=e’(t),利用MATLAB求系统的冲激响应和阶跃响应。 解:求系统零状态响应的MATLAB程序如下:

    %求解系统的冲激响应和阶跃响应 %D2i+5*Di+6*i=De b=[1 0]; a=[1 5 6]; sys=tf(b,a); %传输函数,分子的系数为b,分母的系数为a t=0:0.1:10; y=impulse(sys,t) %求其冲激响应 plot(t,y) figure y=step(sys,t) %求其阶跃响应 plot(t,y)

    NO.5 利用MATLAB解方程y″(t)+4y′(t)+3y(t)=f′(t)+3f(t),f(t)=e–tε(t)的零状态响应。 解:求系统零状态响应的MATLAB程序为:

    %求解y''(t)+4y'(t)+3y(t)=f'(t)+3f(t),f(t)=exp(-t)u(t) 零状态响应 clear all; ts=0;te=10;dt=0.01; sys=tf([1 3],[1 4 3]); t=ts:dt:te; x=exp(-1*t); y=lsim(sys,x,t) %计算零状态响应?x为输入 t为时间向量 plot(t,y); xlabel('t(sec)');ylabel('y(t)'); axis([t(1) t(length(t)) -0.5 0.5]); grid on;

    NO.6 已知系统为y″(t)+y(t)=f(t),初始条件y′(0)=–1,y(0)=0,激励f(t)=cos2πt,利用MATLAB求系统的完全响应。

    %求y''(t)+y(t)=f(t) y'(0)=-1 y(0)=0 f(t)=cos(2pit) 完全响应 clear; b=[1];a=[1 0 1]; %b是分子的系数矩阵,a是分母的系数矩阵?? sys=tf(b,a); t=0:0.1:30; f=cos(t); zi=[-1 0]; %初始条件 y=lsim(sys,f,t,zi); %1.分子分母形式lsim(num,den,u,t) %2.传递函数形式 lsim(sys,u,t) 3.状态空间形式lsim(A,B,C,D,u,t) [A B C D]=tf2ss(b,a); sys=ss(A,B,C,D); 不加初始条件就是零状态响应 plot(t,y); xlabel('时间(t)'); ylabel('y(t)'); title('系统的全响应'); line([0,30],[0,0]);

    Processed: 0.010, SQL: 9