一、实验目的
深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。
掌握利用MATLAB 分析连续系统的时域响应、频响特性和零极点的基本方法。
二、 实验原理
MATLAB 提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。
1. 连续系统的时域响应
连续时间LTI 系统可用如下的线性常系数微分方程来描述:
)()( )()(01)1(1)(t y a t y a t y a t y a n n n n ++++-- )()( )()(01)1(1)(t x b t x b t x b t x b m m m m ++++=-- 。
已知输入信号x (t )以及系统初始状态)0(,),0('),0()1(----n y y y ,就可以求出系统的响应。
MATLAB 提供了微分方程的数值计算的函数,可以计算上述n 阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应。
在调用MATLAB 函数时,需要利用连续系统对应的系数函数。
对微分方程进行Laplace 变换即可得系统函数:
1110111)()()(a s a s a s a b s b s b s b s X s Y s H n n n n m m m m ++++++++==----
在MATLAB 中可使用向量和向量分别保存分母多项式和分子多项式的系数:
],,,,[011a a a a a n n -=],,,,[011b b b b b m m -=
这些系数均按s 的降幂直至s 0排列。
(1) 连续系统的单位冲激响应h (t )的计算
impulse(sys)计算并画出系统的冲激响应。
参数:sys 可由函数tf(b,a)获得。
其中:],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -=
h=impulse(sys, t): 计算并画出系统在向量t 定义的区间上的冲激响应,向量h 保存对应区间的系统冲激响应的输出值。
(2) 连续系统的单位阶跃响应g (t )的计算
step(sys): 计算并画出系统的阶跃响应。
参数:sys 可由函数tf(b,a)获得。
其中: ],,,,[011a a a a a n n -=],,,,[011b b b b b m m -=
g=step(sys, t): 计算并画出系统在向量t 定义的区间上的阶跃响应,向量g 保存对应区间的系统阶跃响应的输出值。
(3) 连续系统的零状态响应y (t )的计算
lsim(sys, x, t) 计算并画出系统的零状态响应。
参数: sys 可由函数tf(b,a)获得, x 为输入信号,
t 为定义的时间向量。
2.连续系统的系统函数零极点分析
连续LTI 系统的系统函数H (s )可以表示为部分分式形式:
)
)...()(())...()(()()()(2121n m p s p s p s z s z s z s k s D s N s H ------==
设n m ≤,且H (s )的极点pi 全部为单极点,则:
∑=-=n
i i i p s k s H 1)()()(1t u e k t h t p n i i i ∑==
系统函数H (s )的极点pi 决定了冲激响应h (t )的基本形式,而零点和极点共同确定了冲激响应h (t )的幅值i k 。
MATLAB 中提供了roots 函数计算系统的零极点,提供了pzmap 函数绘制连续系统的零极点分布图。
3.连续系统的频率响应
若连续因果LTI 连续系统的系统函数H (s )的极点全部位于S 左半平面,则系统的频率响应可由H (s )求出,即
)(j j e )j ()()j (ωϕωωωH s H H s ===
MATLAB 中freqs 函数可以分析连续系统的频响,格式如下:
H=freqs(b,a,w): 计算系统在指定频率点向量w 上的频响H ;w 为频率点向量。
[H,w]=freqs(b,a) : 自动选取200个频率点计算频率响应。
三.实验内容
1. 已知描述连续系统的微分方程为)(2)(10d )(d t x t y t
t y =+,输入)()(t u t x =,初始状态1)0(=-y ,计算该系统的响应,并与理论结果比较,列出系统响应分析的步骤。
实验代码:
a=[1 10];
b=[2];
[A B C D]=tf2ss(b,a);
sys=ss(A,B,C,D);
t=0::5;
xt=t>0;
sta=[1];
y=lsim(sys,xt,t,sta);
subplot(3,1,1);
plot(t,y);
xlabel('t');
title('系统完全响应y(t)');
subplot(3,1,2);
plot(t,y,'-b');
hold on
yt=4/5*exp(-10*t)+1/5;
plot(t,yt,':r');
legend('数值计算','理论计算');
hold off
xlabel('t');
subplot(3,1,3);
k=y'-yt;
plot(t,k);
k(1)
title('误差');
实验结果:
结果分析:
理论值y(t)=*exp(-10t)*u(t)+。
程序运行出的结果与理论预期结果相差较大误差随时间增大而变小,初始值相差最大,终值基本相同。
2. 已知连续时间系统的系统函数为s
s s s s H 2314)(23+++=,求输入)(t x 分别为)(t u ,)(sin t tu ,)(t u e t -时,系统地输出)(t y ,并与理论结果比较。
实验代码:
a=[1,3,2,0];
b=[4,1];
sys=tf(b,a);
t=0::5;
x1=t>0;
x2=(sin(t)).*(t>0);
x3=(exp(-t)).*(t>0);
y1=lsim(sys,x1,t);
y2=lsim(sys,x2,t);
y3=lsim(sys,x3,t);
subplot(3,1,1);
plot(t,y1);
xlabel('t');
title('X(t)=u(t)');
subplot(3,1,2);
plot(t,y2);
xlabel('t');
title('X(t)=sint*u(t)');
subplot(3,1,3);
plot(t,y3);
xlabel('t');
title('X(t)=exp(-t)u(t)');
实验结果:
结论分析:
理论值:
y1(t)=5/4+*t*u(t)+7/4*exp(-2*t) *u(t)-3*exp(-t) *u(t);
y2(t)=+*exp(-t) *u(t)*exp(-2*t) *u(t)*cos(t) *u(t)+*sin(t) *u(t) y3(t)=*exp(-t) *u(t)+7/2*exp(-2*t) *u(t)+3*t.*exp(-t) *u(t);
误差计算:
可见误差小于,计算值与理论值几乎重合。
3. 研究具有以下零极点的连续系统:
(a) 1个极点s=—,增益k=1。
(b) 1个极点s=0,增益k=1。
(c) 2个共轭极点5j s ±=,增益k=1。
(d) 2个共轭极点55.0j s ±-=,增益k=1。
(e) 零点在5.0=s ,极点在51.0j s ±-=,增益k=1。
(e) 零点在5.0=s ,极点在51.0j s ±=,增益k=1。
完成下列任务:
(1) 利用zpk 和tf 命令建立系统的系统函数,画出系统的零极点图。
(2) 分析系统是否稳定。
若稳定,画出系统的幅频特性曲线。
(3) 画出系统的冲激响应波形。
(4) 详细列出根据零极点分析系统特性的过程。
结果分析
(a)~(e)均为因果稳定系统,他们的极点都在jw 轴左侧。
当且仅当H (s )的全部极点都位于s 平面的左半平面时,一个具有有理系统函数H (s )的因果系统才是稳定的。
4. 根据连续系统零极点对系统幅频特性的影响设计下面系统。
在S 平面上配置零极点,并使用freqs 命令绘出相应的扶贫特性曲线,重复该过程直至找到满足下面指标的零极点。
(1) 设计一个具有2个零点,2个极点,实系数的高通滤波器,满足。
;
πωω100,2.1)(8.00)0(>≤≤=j H j H
(2) 设计一个具有实系数的低通滤波器,满足。
;πωωπωω10,
1.0)(,
2.1)(8.0>≤<≤≤j H j H。