前言
卷积积分是线性系统时域分析最基本的方法,为加深对线性系统时域分析的理解,下面先讨论卷积积分
所用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]);