实验七 连续系统的复频域分析
一、实验目的:
1、了解连续系统的复频域分析的基本实现方法;
2、掌握相关函数调用格式及实现功能。
3、掌握用 MATLAB 绘制连续系统零极点图与拉普拉斯变换曲面图
4、掌握用 MATLAB 实现连续系统的频率特性及其幅度特性、相位特性。
二、实验仪器
计算机
MATLAB 软件
三、实验原理:
1、系统仿真方法:
根据模型的种类不同分为:
(1)数学仿真-用计算机软件摸拟各种实际系统的数学模型(软件仿真)。
(2)物理仿真-用实物模型来摸拟各种实际系统(硬件仿真)。
(3)数学--物理仿真—两种的结合
时域模型
系统的数学模型
复域模型
微分方程
状态空间表达式
传递函数
结构图
频域模型
频率特性图
系统仿真分析与设计方法:时域法和频域法
(1)时域法:是以状态方程为基础对系统进行分析设计。系统特性分析包
括:李亚谱诺夫(Lyapunov)稳定性分析,能控能观性分析等。
(2)频域法:主要是借助于传递函数,通过劳斯(Routh)定理、奈氏图
(Nyquist)、伯德图(Bode)、尼克尔斯图(Nichols)、根轨迹等概念和方法分析
第 1页
系统的各种特性。如稳定性、动态特性、稳态误差等。
2、实验涉及的 MATLAB 函数
(1) laplace 函数
功能:用符号推理求解拉氏变换。
调用格式:L= laplace(F) F 为函数,默认为变量 t 的函数,返回 L 为 s 的
函数时,要用 syms 命令定义符号变量 t。
(2)
ilaplace 函数
功能:用符号推理求解反拉氏变换。
调用格式:L= ilaplace(F) F 为函数,默认为变量 t 的函数,返回 L 为 s
的函数时,要用 syms 命令定义符号变量 t。
(3)
roots()函数
功能:求多项式的根
调用格式: r=roots(C):其中 C 为多项式的系数向量(从高次到低次),
r 为根向量。因此可用直接求根来判断系统稳定性。
(4) rlocus 函数
功能:求系统的根轨迹
调用格式:rlocus(sys)绘制系统的根轨迹;
rlocus(sys,K)绘制增益为 K 的闭环极点;
rlocus(sys1,sys2,…)在同一复平面绘制多个系统的根轨迹,为区分各个
系统的不同根轨迹,可用 不同的颜色来显示,如 rlocus(sys1,‘r’,sys2,‘y’…);
(5) step 函数
功能:绘制系统的阶跃曲线。
调用格式: step(num,den,t) ,其 num,den 分别为传递函数的分子、分
母的多项式。t 为仿真时间。
(6)impulse 函数
功能:绘制系统的冲激响应曲线。
调用格式:impulse(num,den,t)
(7)lsim 函数
功能:绘制系统的任意响应曲线。
第 2页
调用格式:lsim(num, den, u,t), u 为任意输入信号。
(8)gensing()函数
功能:用来产生一些信号。
调用格式:[u,t]= gensing(type,tau,Tf,Ts)。Type 为产生信号的类型
(’sin’正弦波、’square’为方波、’pulse’为脉冲序列)。Tau 为信号周期,Tf
信号持续时间,Ts 采样周期。u 为所产生的信号。
gensing()函数和 lsim()联合起来使用。
四、实验内容
经典的拉普拉斯变换分析方法即先从时域变换到复频域,在复频域经过处理
后再利用拉普拉斯反变换从复频域变换到时域,完成对时间问题的求解,涉及的
函数有 laplace 函数和 ilaplace 函数等
1、求解时域信号对应的拉普拉斯变换、已知象函数求拉普拉斯反变换
例 1、求信号 e-3t sin2tu(t)拉氏变换
MATLAB 程序:
>> clear;
>> syms t s
>> f=exp(-3*t)*sin(2*t);
>> F=laplace(f)
运行结果:
s
3
s
2
,
3
s
3
2
s
求原函数 f(t)
)(
sF
F =
1/2/(1/4*(s+3)^2+1)
例 2、已知象函数
MATLAB 程序:
clear;
syms s t
F=(s-2)/(s^4+ 3*s^3+3* s^2+s)
f_t=ilaplace(F)
4
s
运行结果:
f_t=-2+3/2*t^2*exp(-t)+2*t*exp(-t)+2*exp(-t)
第 3页
2、利用拉普拉斯变换求解系统全响应
例 3、已知
)(
te
)(3
tu
,
)(
sH
)(
sR
)(
sE
s
5
s
6
2
s
,初始状态 y(0)=1 y’(0)=1;
求系统零状态 响应 )(t
rzs 。
%% 零输入响应
num=[1 0 ];
den=[1 5 6 ];
sys=tf(num,den);
t=0:0.01:3;
sys1=ss(sys);
y=[1 1 ];
u=zeros(1,length(t));
rzi=lsim(sys1,u,t,y);%
subplot(311);
plot(t,rzi);
title('零输入响应 yzi(t)');
ylabel('rzi(t)')
%% 零状态响应
syms s f
f=ilaplace(3/((s+2)*(s+3)));t=0:0.01:3;
rzs=3*exp(-2*t)-3*exp(-3*t);
subplot(312);
plot(t,rzs)
title('零状态响应');
ylabel('rzs(t)')
%% 全响应=零状态响应+零输入响应
r=rzi+rzs';
subplot(313);
plot(t,r);
第 4页
t
,0
y
_)0(
,1
y
_)0('
,2
2
2
e2)(2)(
ty
ty
d
d
t
d3)(
ty
d
t
title('全响应');
ylabel('r(t)');xlabel('时间(秒)');ylabel('r(t)')
例 4、已知
求解 y(t)
MATLAB 程序参考:
clear;
b=[1];a=[1 3 2];
[A B C D]=tf2ss(b,a);
sys=ss(A,B,C,D);
t=0:0.01:10;
f=-2*exp(-t);
zi=[2 1];
y=lsim(sys,f,t,zi);
plot(t,y);grid;
xlabel(′时间(t)′);
ylabel(′y(t)′);
title(′系统的全响应′);
运行结果:
3、使用部分分式法求解拉普拉斯反变换
使用部分分式法求解拉普拉斯反变换,方法简单,易于实现,但是对于分母
第 5页
多项式复杂难于分解的、或者分解后有多重极点的,手动计算的运算量就很大了,
这里介绍使用 matlab 方便实现部分分式的分解,进而易于就拉斯反变换。
例 5、已知象函数
)(
sF
3
s
s
5
s
2
2
3
s
9
s
2
7
分析:关键是使用部分分式法裂项分开
求 F(s)使用部分分式展开的表示形式
Matlab 语句:
b=[0 0 0 1 -2];
a=[1 3 3 1 0]; %分母系数
[r,p,k]=residue(b,a) %留数运算, 其中 r 是系数, p 是极点, k 是直接项
%分子系数
运行实验结果:
r =
p =
k =
2.0000
2.0000
3.0000
-2.0000
-1.0000
-1.0000
-1.0000
0
[ ]
因此
)(
sF
3
)1
3
2
)1
2
(
s
(
s
2
1
s
2
s
例 6、已知象函数
9
s
2
分析:关键是使用部分分式法裂项分开
5
s
2
2
3
s
s
3
s
)(
sF
7
,求原函数 f(t)
Matlab 语句:
b=[1 5 9 7];
a=[0 1 3 2];
[r,p,k]=residue(b,a) %留数运算, 其中 r 是系数, p 是极点, k 是直接项
%分子系数
%分母系数
运行结果:
r =
-1
2
第 6页
p =
k =
-2
-1
1
2
因此用部分分式法裂项后的表示形式为:
)(
sF
2
s
2
1
s
1
2
s
4、利用 MATLAB 绘制系统传递函数 H(s)的零极点图
(1)传递函数:
用多项式形式表示的开环传递函数,
)(
sG
num
den
)(
s
)(
s
m
n
sb
1
sa
1
sb
2
sa
2
m
1
n
1
b
m
a
n
1
1
在 Matlab 中函数 tf()可用来建立传递函数模型,
其调用格式为:G(S)=tf(num,den)。
(2)用多项式形式表示的闭环传递函数 :
)(
s
)(
sG
)(
sG
1
m
sb
1
sb
2
m
1
sb
1
m
sb
2
b
m
1
m
1
n
sa
1
b
1
m
n
sa
2
1
a
n
1
(3)用零极点增益形式表示的开环传递函数
)(
sG
(
sk
(
s
z
1
p
1
)(
)(
s
s
z
2
p
2
(
)
s
)
(
s
z
m
p
n
)
)
在 Matlab 中函数 zpk()可用来建立传递函数零、极、增益模型,其调用格式为:
G(S)=zpk(z,p,k)。
例 7、已知某系统的传递函数
)(
sH
)(
sR
)(
sE
2
s
2
11
s
4
8
s
11
s
10
3
s
,绘制零极点图
MATLAB 参考程序:
%传递函数分子多项式系数行向量
num=[1,4,8]
den=[1,11,11,10] %传递函数分母多项式系数行向量
G=tf(num,den)
[z,p,k]=tf2zp(num,den) %提取传递函数的零极点和增益
pzmap(G)
grid on
%绘制其零极点图
%打开绘图网格
%建立传递函数模型
第 7页
运行结果:零极点图
5、用 MATLAB 绘制拉普拉斯变换的曲面图
从三维几何空间的角度来看, )(sF 和 )(s 对应着复平面的两个曲面,如果
我们能绘出它们的三维曲面图,我们就可以直观的分析连续信号的拉普拉斯变换
F(s)随复变量 s 的变化。
上述过程我们可以利用 MATLAB 的三维绘图功能来实现。现在考虑如何用
MATLAB 来绘制 s 平面的有限区域上连续时间信号 f(t)的拉普拉斯变换 F(s)
的曲面图,我么以单位阶跃信号 u(t)为例来说明实现过程。
我们知道,对单位阶跃信号 f(t)= u(t),其拉普拉斯变换为
)( 。
首先,我们用两个向量来确定绘制曲面图的 s 平面的横、纵坐标的范围。
然后再调用 meshgrid()函数来产生矩阵 S,并用矩阵来表示绘制曲面图的附
sF
1
s
平面区域,对应的 MATLAB 命令如下:
[x,y]=meshgrid(x1,y1)
S=x+i*y
上述命令产生的矩阵 S 包含了复平面
2.0
2.0
、
2.0
j
2.0
范围以
内间隔 0.03 取样的所有样点。
最后我们在计算出信号拉普拉斯变换在复平面上的这些样点上的值,即可用
函数 mesh()来绘出其曲面图。
例 8、 已知连续时间信号 f(t)=sin(t)u(t),求出该信号的拉普拉斯变换,并用
MATLAB 绘制拉普拉斯变换的曲面图
第 8页