
一、实验目的
1.掌握拉普拉斯变换及其反变换的定义,并掌握MATLAB实现方法。
2.学习和掌握连续时间系统系统函数的定义及复频域分析方法。
3.掌握系统零极点的定义,加深理解系统零极点分布与系统特性的关系。
二、实验原理与方法
1.拉普拉斯变换
连续时间信号的拉普拉斯变换定义为
拉普拉斯反变换定义为
在MATLAB中,可以采用符号数学工具箱的laplace函数和ilaplace函数进行拉氏变换和反拉氏变换。
L=laplace(F)符号表达式F的拉氏变换,F中时间变量为t,返回变量为s的结果表达式。
L=laplace(F,t)用t替换结果中的变量s。
F=ilaplace(L)以s为变量的符号表达式L的拉氏反变换,返回时间变量为t的结果表达式。
F=ilaplace(L,x)用x替换结果中的变量t。
除了上述ilaplace 函数,还可以采用部分分式法,求解拉普拉斯逆变换,具体原理如下:
当 X (s)为有理分式时,它可以表示为两个多项式之比:
式(3)可以用部分分式法展成一下形式
通过查常用拉普拉斯变换对,可以由式(1-2)求得拉普拉斯逆变换。
利用 MATLAB 的residue 函数可以将 X (s)展成式(1-2)所示的部分分式展开式,该函数的调用格式为:[r,p,k] = residue(b,a) 其中b、a 为分子和分母多项式系数向量,r、p、k 分别为上述展开式中的部分分式系数、极点和直项多项式系数。
2.连续时间系统的系统函数
连续时间系统的系统函数是系统单位冲激响应的拉氏变换
此外,连续时间系统的系统函数还可以由系统输入和系统输出信号的拉氏变换之比得到
单位冲激响应反映了系统的固有性质,而从复频域反映了系统的固有性质。由式(6)描述的连续时间系统,其系统函数为s的有理函数
3.连续时间系统的零极点分析
系统的零点是指式(7)的分子多项式为零的点,极点指使分母多项式为零的点,零点使系统的值为零,极点使系统函数的值无穷大。通常将系统函数的零极点绘在s平面上,零点用表示,极点用表示,这样得到的图形称为零极点的分布图。
由零极点的定义可知,零点和极点分别指式(7)的分子多项式和分母多项式的根。利用MATLAB求多项式的根可以通过函数roots来实现,该函数的调用格式为:
r=roots(c) c为多项式的系数向量,返回值r为多项式的根向量。
分别对式(7)的分子多项式和分母多项式求根即可得到零极点。
此外,在MATLAB中还提供了更简便的方法来求取零极点和绘制系统函数的零极点分布图,即利用pzmap函数,该函数的调用格式为:
pzmap(sys)绘出由系统模型sys描述的系统的零极点分布图。
[p,z]=pzmap(sys) 这种调用方法返回极点和零点,而不绘出零极点分布图。其中sys为系统传函模型,由t命令sys=tf(b,a)实现,b、a为传递函数的分子多项式和分母多项式的系数向量。
MATLAB还为用户提供了两个专用函数tf2zp和zp2tf来实现系统传递函数模型和零极点增益模型的转换,其调用格式为:
其中b、a为传递函数的分子多项式和分母多项式的系数向量,返回值z为零点列向量,p为极点列向量,k为系统函数零极点形式的增益。
三、实验内容
(1)已知系统的冲激响应,输入信号,是采用复频域的方法求解系统的响应,编写MATLAB程序实现。
使用卷积定理求解,先分别求的拉氏变换然后根据式(6)求出输出,最后对进行拉普拉斯反变换即可得到系统的响应。
MATLAB程序如下:
syms t;
h=heaviside(t)-heaviside(t-2);
x=heaviside(t);
H=laplace(h);
X=laplace(x);
F=X.*H;
f=ilaplace(F);
f=ilaplace(F)
f =
t - heaviside(t - 2)*(t - 2)
故系统响应为
(2)已知因果连续时间系统的系统函数分别如下,试采用MATLAB画出其零极点分布图,求解系统的冲激响应并判断系统是否稳定。
MATLAB程序及运行结果如下:
a = [1 2 2 1];
b = [1];
sys = tf(b,a);
pzmap(sys);
[r,p,k] = residue(b,a);
syms s
H = 1/(s^3+2*s^2+2*s+1);
h = ilaplace(H);
impulse(sys);
b = [1];
a = [1 2 2 1];
[H,w] = freqs(b,a);
subplot(2,1,1);
plot(w,abs(H));
xlabel('\\omega(rad/s)');
ylabel('Magnitude');
title('|H(j\\omega)|');
grid on;
subplot(2,1,2);
plot(w,angle(H));
xlabel('\\omega(rad/s)');
ylabel('Phase');
title('\\phi(\\omega)');
grid on;
p=
-1.0000
-0.5000 + 0.8660i
-0.5000 - 0.8660i
z =
Empty matrix: 0-by-1
系统没有零点,极点为p=-1,-0.5±0.866i;
系统的零极点图
r =
1.0000 + 0.0000i
-0.5000 - 0.2887i
-0.5000 + 0.2887i
p =
-1.0000 + 0.0000i
-0.5000 + 0.8660i
-0.5000 - 0.8660i
k =
[]
由此得到
依据基本拉式变换对可以得到
频响曲线为:
频率响应:
b=[1];
a=[1 2 2 1];
[H w]=freqs(b,a);
subplot(211);
plot(w,abs(H));
xlabel('\\omega(rad/s)');
ylabel('Magnitude');
title('|X(j\\omega)|');
grid on;
subplot(212);
plot(w,angle(H));
xlabel('\\omega(rad/s)');
ylable('Phase');
title('\\phi(\\omgea)');
由于该因果系统的所有极点都位于S 平面的左半平面,所以系统是稳定的。
MATLAB程序及运行结果如下:
a = [5 2 -3 3 3 2];
b = [1 0 1];
sys = tf(b,a);
pzmap(sys);
[r,p,k] = residue(b,a)
r =
0.1277 + 0.0000i
-0.0341 - 0.0492i
-0.0341 + 0.0492i
-0.0298 - 0.1226i
-0.0298 + 0.1226i
p =
-1.1803 + 0.0000i
0.7391 + 0.6886i
0.7391 - 0.6886i
-0.34 + 0.4586i
-0.34 - 0.4586i
k =
[]
由此得到
b = [1 0 1];
a = [5 2 -3 3 3 2];
[H,w] = freqs(b,a);
subplot(2,1,1);
plot(w,abs(H));
xlabel('\\omega(rad/s)');
ylabel('Magnitude');
title('|H(j\\omega)|');
grid on;
subplot(2,1,2);
plot(w,angle(H));
xlabel('\\omega(rad/s)');
ylabel('Phase');
title('\\phi(\\omega)');
grid on;
由于该因果系统的所有极点不全位于S 平面的左半平面,所以系统是不稳定的。
(3)已知连续时间系统函数的极点位置分别如下所示(设系统无零点),试用MATLAB绘制6中不同情况下,系统函数的零极点分布图,并绘制相应冲激响应的时域波形,观察并分析系统函数极点位置对冲激响应时域特性的影响。
MATLAB程序及运行结果如下:
syms t;
b=[1];
a=[1 0];
sys=tf(b,a);
subplot(211);
pzmap(sys);
hs=sym('1/(s)' );
ht=ilaplace(hs);
subplot(212);
ezplot(ht);
MATLAB程序及运行结果如下:
syms t;
b=[1];
a=[1 2];
sys=tf(b,a);
subplot(211);
pzmap(sys);
hs=sym('1/(s+2)' );
ht=ilaplace(hs);
subplot(212);
MATLAB程序及运行结果如下:
syms t;
b=[1];
a=[1 -2];
sys=tf(b,a);
subplot(211);
pzmap(sys);
hs=sym('1/(s-2)' );
ht=ilaplace(hs);
subplot(212);
ezplot(ht);
MATLAB程序及运行结果如下:
syms t;
b=[1];
a=[1 0 4];
sys=tf(b,a);
subplot(211);
pzmap(sys);
hs=sym('1/(s^2+4)' );
ht=ilaplace(hs);
subplot(212);
ezplot(ht);
MATLAB程序及运行结果如下:
b=[1];
a=[1 2 17];
sys=tf(b,a);
subplot(211);
pzmap(sys);
f=sym('1/(s^2+2*s+17)')
F=ilaplace(f)
subplot(212);
syms t;
ezplot(F)
axis([-7 5 -50 100])
图像如下:
MATLAB程序及运行结果如下:
b=[1];
a=[1 -2 17];
sys=tf(b,a);
subplot(211);
pzmap(sys);
f=sym('1/(s^2-2*s+17)')
F=ilaplace(f)
subplot(212);
syms t;
ezplot(F)
axis([-5 7 -100 50])
由以上六例,可以总结出,在无零点的情况下:
当极点唯一且在原点时,h(t)为常数;
当极点唯一且是负实数时,h(t)为递减的指数函数;
当极点唯一且是正实数时,h(t)为递增的指数函数;
当H(s)有两个互为共轭的极点时,h(t)有一因子;
当H(s)有两个互为共轭的极点且他们位于右半平面时,h(t)还有一因子;
当H(s)有两个互为共轭的极点且他们位于左半平面时,h(t)还有一因子;
(4)已知3个连续时间系统函数
上述三个系统具有相同的极点,只是零点不同,试用MATLAB分别绘制系统的零极点分布图及相应冲激响应的时域波形,观察并分析系统函数零点位置对冲激响应时域特性的影响。
MATLAB程序及运行结果如下:
syms t;
b=[1];
a=[1 2 17];
sys=tf(b,a);
[p,z]=pzmap(sys);
subplot(121);
pzmap(sys);
title('零极点图');
hs=sym('1/(s^2+2*s+17)' );
ht=ilaplace(hs);
subplot(122);
ezplot(ht);
title('冲激响应h(t)');
MATLAB程序及运行结果如下:
syms t;
b=[1 8];
a=[1 2 17];
sys=tf(b,a);
[p,z]=pzmap(sys);
subplot(211);
pzmap(sys);
title('零极点图');
hs=sym('(s+8)/(s^2+2*s+17)' );
ht=ilaplace(hs);
subplot(212);
ezplot(ht);
title('冲激响应h(t)');
MATLAB程序及运行结果如下:
syms t;
b=[1 -8];
a=[1 2 17];
sys=tf(b,a);
[p,z]=pzmap(sys);
subplot(211);
pzmap(sys);
title('零极点图');
hs=sym('(s+8)/(s^2+2*s+17)' );
ht=ilaplace(hs);
subplot(212);
ezplot(ht);
title('冲激响应h(t)');
实验结果分析: 由以上三例可以看出,当极点不变时,零点分布只影响系统时域响应的幅度和相位,对时域响应没有影响。零点的正负会影响波形的翻转,绝对值影响波形的峰峰值。即不会改变是衰减振荡还是增长振荡。
四、实验心得体会
通过此次实验我掌握了用MATLAB实现拉普拉斯变换和拉普拉斯反变换的方法,学习了连续时间系统的复频域分析方法,信号的Laplace变换十分基本而重要,这次的学习使我对Laplace变换有了更深的理解。同时也为下章的z变换学习打好了基础。
