实验3线性时不变系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
33
3.2
实验原理
Байду номын сангаас
实验三
线性时不变系统的时域分析
3. lsim函数:给定系统函数、初始状态和输入信号,计算连续时间和离散时间 LTI 系统的响应; 4. impz函数:给定系统函数,计算离散时间 LTI 系统的单位脉冲响应; 5. stepz函数:给定系统函数,计算连续时间 LTI 系统的单位阶跃响应; 6. filter函数:给定系统函数、初始状态和输入信号,计算离散时间 LTI 系统的 响应。 以下的函数可用于构造系统模型,或者不同系统模型之间的转换: 1. tf函数:给定 ak 和 bk ,构造一个系统函数(或称为传递函数)为
a=[1 2 5];
2
% Denominators. % Numerators. % Define a transfer function object.
b=[1 5];
sys=tf(b,a);
4
t=0:0.01:10; subplot (2,1,1); impulse(sys,t); step(sys,t);
3.2 实验原理
线性时不变系统(LTI)对输入信号的响应等于系统的单位冲激响应与输入信 号的卷积。通过卷积可求得 LTI 系统对任意输入信号的响应。如果我们从某一初 始时刻(如 t = 0)开始分析某 LTI 系统,则通过卷积可以求得系统的零状态响应。 因此卷积是 LTI 系统时域分析的基本方法之一。在上一个实验中我们已学习了在 MATLAB 中实现卷积的方法。 很多线性 LTI 系统的数学模型可以归纳为 n 阶线性常系数微分方程(对于连续 时间系统)和差分方程(对于离散时间系统) ,或者表示为一阶常微分(差分)方 程组(常称为状态空间模型) 。如果已知系统的输入信号和初始状态,我们或许可 以通过解析的方法求解系统的响应。但对于一般的问题,往往不一定存在解析解, 而且即使有解析解,对于高阶系统,求解过程也可能相当繁琐。因此本实验我们将 学习用 MATLAB 对 LTI 系统的时域响应进行数值求解和仿真的方法。
m ∑ k=0
bk ω [n − k] ,
(3.4)
MA 滤波器的输出是非递归的,只和输入有关,可通过卷积计算。因此3.2式给出的 IIR 滤波器也称为 ARMA 滤波器。一般来说,总是可以将3.2式写为递推的形式: n m ∑ ∑ 1 bk x [n − k] (3.5) y [n] = ak y [ n − k ] + − a0 k=1 k=0 根据系统的初始条件和输入信号即可递推地算出 y[n]。这种方法简单直观,且适合 计算机求解,但通常只能求出系统输出序列的值,不能像解析解那样得到系统输出 的数学表达式。 对于3.1式描述的连续时间系统,数值求解的原理是先将微分方程离散化,近 似为相应的差分方程(将 dt 近似为 ∆t),再求解差分方程,因此其数值求解方法方 法与上述的离散系统的求解方法是类似的。 MATLAB 的工具箱已有求解上述问题的函数,因此只需简单的函数调用即可数 值求解系统的各种响应,如冲激响应、阶跃响应、零输入响应和零状态响应等,可 大大简化复杂系统的设计和分析过程。另外 MathWorks 还提供了用于系统建模和 仿真的 Simulink 软件包,配合 MATLAB 使用可省去许多代码的重复编写工作,提 高求解的效率。
数值求解的基本原理
3.2式所描述的离散时间因果 LTI 系统(通常也称为数字滤波器)可分为两个 部分:一部分是自递归(AR, autoregressive)的 IIR 滤波器:
n ∑ k=0
ak ω [n − k] = x [n] ,
(3.3)
32
实验三
线性时不变系统的时域分析
3.2
实验原理
AR 滤波器的当前的输出与之前的输出有关,可递归地求得输出;另一部分是滑动 平均(MA, moving average)的 FIR 滤波器: y [n] =
n ∑
bk sk (3.6) ak sk
H ( s) =
k=0 m ∑ k=0
的模型; 2. ss函数,给定 A、 B、C 和 D,构造一个由 d ω (t) = Aω (t) + B x (t) dt y (t) = Cω (t) + D x (t) 描述的状态空间(state-space)系统模型; 3. ss2tf和tf2ss函数:提供两种系统模型之间的转换。
ak y [n − k] =
bk x [n − k]
(3.2)
如果已知 x[n] 和 y[k − 1], y[k − 2], · · · , y[k − N ],也可求出 n ≥ k 时 y[n] 的值。 通常我们从某一时刻(t = 0)时刻开始分析某 LTI 系统,系统的响应可表示为零 输入响应和零状态响应两部分之和。零输入响应是指系统初始时刻之后的输入为 零、仅由系统的初始状态引起的系统的输出,零状态响应是指系统的初始状态为 零、仅由系统初始时刻之后的输入引起的系统的输出。 系统响应的时域解析解法的过程是先求出微分方程(或差分方程)的齐次解, 再根据输入信号的形式确定方程的特解,然后根据初始条件确定解的系数,最后得 到系统的响应。零输入响应和零状态响应需要根据输入信号和初始条件的不同,分 别求解得到。这种计算可能相当繁琐,而且不一定存在解析解,需要通过数值方法 来求解。
图 3.1 Simulink 的 Library Browser 窗口
在“Simulink Library Brower”窗口中,选择新建模型(New model)打开一个 空白模型窗口。用鼠标将所需要的模块拖动到模型窗口中,用连接线将各模块连接 起来,再给定系统的初始状态和输入信号,即可仿真系统执行的过程,得到输出结 果。
m
(3.1)
如果已知输入信号 x(t) 及系统的初始条件 y (0− ), y′ (0− ), y′′ (0− ), · · · , y(n−1) (0− ),可 求出系统的响应。对于离散时间 LTI 系统,其输入信号 x[t] 和系统响应 y[t] 用线性 常系数差分方程表示:
n ∑ k=0 m ∑ k=0
a=[1 0.4 -0.12];
2
% Denominators.
b=[1 2]; N=15;
% Numerators. %Number of samples.
36
实验三
线性时不变系统的时域分析
3.2
实验原理
Impulse Response 1.5 Amplitude 1 0.5 0 −0.5 0 2 4 6 Time (seconds) Step Response 1.5 Amplitude 1 0.5 0 8 10
6
subplot (2,1,2);
即可画出如图3.2所示的单位冲激响应和单位阶跃响应的波形。 如果运行命令
ht=impulse(sys,t);
2
st=step(sys,t);
则可得到单位冲激响应和单位阶跃响应的数值解。 2. 离散时间 LTI 系统的单位脉冲响应和单位阶跃响应 MATLAB 的 signal processing 工具箱中提供了求解离散时间系统(通常称为 数字滤波器)单位脉冲响应的函数impz的和单位阶跃响应的函数stepz。 例 2 已知描述离散时间系统的差分方程为 y [n] + 0.4y [n − 1] − 0.12y [n − 2] = x [n] + 2 x [n − 1],计算系统的单位冲激响应和单位阶跃响应。 解 运行以下的脚本
应用实例 1. 连续时间 LTI 系统的单位冲激响应和单位阶跃响应 单位冲激响应 h(t) 是描述连续时间 LTI 系统的重要函数,为此 MATLAB 的
35
3.2
实验原理
实验三
线性时不变系统的时域分析
control system 工具箱专门提供了impulse函数。只要提供描述系统的微分方 程的系数 ak 和 bk ,或者说,系统传递函数 H ( s) 或频率响应 H ( jω),
0
2
4 6 Time (seconds)
8
10
图 3.2 单位冲激响应和单位阶跃响应
subplot (2,1,1); subplot (2,1,2); impz(b,a,N); stepz(b,a,N);
34
实验三
线性时不变系统的时域分析
3.2
实验原理
在 MATLAB 中的工具栏点击 Simulink 图标,或在命令行中输入“simulink” , 即可启动 Simulink,显示如3.1所示的“Simulink Library Browser”窗口。从中可 以看到 Simulink 预定义的基本模块库及其子库,如 Continuous, Discrete, ..., Sinks, Sources 等等。其中 Continuous 和 Discrete 分别存放的是对连续和离散信号及系 统进行操作的运算符,如 Derivative(求导) 、Integrator(积分器) 、Transfer Fcn (传递函数) 、State-Space(状态空间) 、Difference(差分) 、Discrete Filter(离散 滤波器) 、Discrete State-Space(离散状态空间)等等;在 Sources 中存放了各种 信号源,如 Clock(时间 t) 、Constant(常数) 、Sine Wave(正弦波), Step(阶梯 波) 、Signal Generator(信号发生器)等等;在 Sinks 存放的是对信号进行显示和 存储终端,如 Scope(示波器) 、XY Graph(显示两变量的函数关系) 、To File(存 储到文件)等等。
实验三
线性时不变系统的时域分析
3.1 实验目的
1. 学会使用 MATLAB 对线性时不变系统的时域特性进行仿真分析; 2. 熟悉 LTI 系统在典型激励下的响应及特征; 3. 掌握用 MATLAB 函数数值求解系统零输入响应和零状态响应的方法; 4. 学习使用 Simulink 进行系统建模和仿真。
N ∑
bk sk ak sk
H ( s) =
k=0 M ∑ k=0
即可求出指定时间范围内 h(t) 的数值解并画出其时域波形。类似的函数还 有step函数,可用来计算和绘制单位阶跃响应 s(t)。例如 例 1 描述连续时间系统的微分方程为 y′′ (t) + 2y′ (t) + 5y (t) = x′ (t) + 5 x (t), 计算系统的单位冲激响应和单位阶跃响应。 解 本例题的单位冲激响应的解析解为 h(t) = e−t (cos 2t + 2 sin 2t) u (t)。在 MATLAB 中运行以下的脚本
31
3.2
实验原理
实验三
线性时不变系统的时域分析
LTI 系统的时域分析
很多信号和系统问题可归结为求解微分方程和差分方程的问题。如连续时间 LTI 系统的输入信号 x(t) 和响应 y(t) 用线性常系数微分方程来描述:
n ∑
dk y (t) ∑ dk x (t) ak = bk , dtk dtk k=0 k=0
(3.7)
3.2.1 Simulink 建模和仿真 Simulink 是 MathWorks 公司基于 MATLAB 开发的用于多领域建模和仿真的 软件包,常集成于 MATLAB 中与之配合使用。它提供了一个交互式的图形化环境 和可自定义的模块库,可对各种系统,例如通信、控制、信号处理以及图像处理 等系统进行设计、仿真、执行和测试。Simulink 的建模和仿真功能非常强大,在 MathWorks 的网站可找到Simulink 的入门和功能介绍。
相关 MATLAB 函数 MATLAB 的 control system 和 signal processing 等工具箱中提供了一系列的函 数可用来计算 LTI 系统的各种响应。一般来说只需提供微分方程(或差分方程)的 系数(即系统函数) ,即可得出系统的冲激响应和阶跃响应。如果再提供初始条件 和输入信号,则可得到系统的零输入响应、零状态响应和全响应。这里仅简单列举 相关函数及其功能,更详细的信息请参见 MATLAB 的在线帮助文档。 1. impulse函数:给定系统函数,计算连续时间 LTI 系统的单位冲激响应; 2. step函数:给定系统函数,计算连续时间 LTI 系统的单位阶跃响应;