华工信号与系统实验五信工7班
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 连续系统分析
一、实验目的
深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。掌握利用MATLAB 分析连续系统的时域响应、频响特性和零极点的基本方法。
二、 实验原理
MATLAB 提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。 1. 连续系统的时域响应
连续时间LTI 系统可用如下的线性常系数微分方程来描述:
。 已知输入信号x (t )以及系统初始状态,就可以求出系统的
响应。MATLAB 提供了微分方程的数值计算的函数,可以计算上述n 阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应。
在调用MATLAB 函数时,需要利用连续系统对应的系数函数。对微分方程进行Laplace 变换即可得系统函数:
在MATLAB 中可使用向量和向量分别保存分母多项式和分子多项式的系数:
这些系数均按s 的降幂直至s 0排列。
(1) 连续系统的单位冲激响应h (t )的计算
impulse(sys)计算并画出系统的冲激响应。参数:sys 可由函数tf(b,a)获得。其中:
)()( )()(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 ++++=-- )0(,),0('),0()
1(---
-
n y
y y 0
11
10
111)()()(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 ++++++++==---- ],,,,[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)获得。其中:
g=step(sys, t): 计算并画出系统在向量t 定义的区间上的阶跃响应,向量g 保存对应区间的系统阶跃响应的输出值。
(3) 连续系统的零状态响应y (t )的计算
lsim(sys, x, t) 计算并画出系统的零状态响应。参数: sys 可由函数tf(b,a)获得, x 为输入信号, t 为定义的时间向量。
2.连续系统的系统函数零极点分析
连续LTI 系统的系统函数H (s )可以表示为部分分式形式:
设,且H (s )的极点pi 全部为单极点,则:
系统函数H (s )的极点pi 决定了冲激响应h (t )的基本形式,而零点和极点共同确定了冲激响应h (t )的幅值。
MATLAB 中提供了roots 函数计算系统的零极点,提供了pzmap 函数绘制连续系统的零极点分布图。
],,,,[011a a a a a n n -=],,,,[011b b b b b m m -=],,,,[011a a a a a n n -=],,,,[011b b b b b m m -=)
)...()(())...()(()()
()(2121n m p s p s p s z s z s z s k s D s N s H ------==
n m ≤∑=-=n
i i i p s k s H 1)()()(1
t u e k t h t
p n
i i i ∑==i k
3.连续系统的频率响应
若连续因果LTI 连续系统的系统函数H (s )的极点全部位于S 左半平面,则系统的频率响应可由H (s )求出,即
MATLAB 中freqs 函数可以分析连续系统的频响,格式如下:
H=freqs(b,a,w): 计算系统在指定频率点向量w 上的频响H ;w 为频率点向量。 [H,w]=freqs(b,a) : 自动选取200个频率点计算频率响应。
三、实验内容
1. 已知描述连续系统的微分方程为
,输入,初始状态,计算该系统的响应,并与理论结果比较,列出系统响应分析的步骤。
①源代码 a=[1 10]; b=[2];
[A B C D]=tf2ss(b,a); sys=ss(A,B,C,D); t=0:0.001: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');
)(j j e )j ()()j (ωϕωωωH s H H s ===)(2)(10d )
(d t x t y t
t y =+)()(t u t x =1)0(=-y
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('误差');
②运行结果