前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Simulink建模与仿真(8)-动态系统模型及其Simulink表示(离散系统模型及表示)

Simulink建模与仿真(8)-动态系统模型及其Simulink表示(离散系统模型及表示)

作者头像
用户9925864
发布2023-09-18 15:32:54
7720
发布2023-09-18 15:32:54
举报

离散系统的基本概念

所谓离散系统,是指系统的输入与输出仅在离散的时间上取值,而且离散的时间具有相同的时间间隔。下面给出离散系统更全面的定义。

【定义】离散系统。凡是满足如下条件的系统均为离散系统:

(1) 系统每隔固定的时间间隔才“更新”一次,即系统的输入与输出每隔固定的时间间隔便改变一次。固定的时间间隔称为系统的“采样”时间。

(2) 系统的输出依赖于系统当前的输入、以往的输入与输出,即系统的输出是它们的某种函数。

(3) 离散系统具有离散的状态。其中状态指的是系统前一时刻的输出量。

离散系统的数学描述

前面给出了离散系统的定义,这里给出离散系统的数学描述,其数学描述应为:

【例1】 对于如下的离散系统模型:

其中系统的初始状态为y(0)=3,系统输入为0,2,4......,则系统在时刻0,1,2……的输出分别为:

离散系统除了采用一般的数学描述方式之外,还可以采用差分方程进行描述。使用差分方程描述方程形式如下:

设系统的状态变量为x,离散系统差分方程由以下两个方程构成:

状态更新方程:

系统输出方程:

离散系统的Simulink描述

这里以【例1】中的离散系统为例,说明如何利用Simulink对离散系统进行描述,并在此基础上对系统进行简单的分析。此处并不建立系统的Simulink模型进行仿真,而是编写M脚本文件从原理上对离散系统进行说明,并说明离散系统与连续系统的区别之处。

编写脚本文件systemdemo2.m对【例1】中的离散系统进行描述分析:

代码语言:javascript
复制
y(1)=3;
% 表示离散系统初始状态为3
% 由于MATLAB中数组下标从1开始,这里y(1)相当于上文中的y(0)=3,下同
u(1)=0; % 表示离散系统初始输入为0
for i=2:11 % 设定离散系统输入范围为时刻0到时刻10
    u(i)=2*i; % 离散系统输入向量
    y(i)=u(i).^2+2*u(i-1)+3*y(i-1); % 离散系统输出向量
end
plot(u,y); grid; % 绘制系统仿真结果

系统从时刻0到时刻10的输入与输出的关系如下图所示。其中横坐标表示离散系统的输入向量,而纵坐标表示离散系统的输出向量。说明:这里并没有指定离散系统的采样时间,而仅仅举例说明离散系统的求解分析。在实际的系统中,必须指定系统的采样时间,只有这样才能获得离散系统真正的动态性能。

线性离散系统

对于任何系统而言,系统的描述都可以采用抽象的数学形式来进行描述。这是因为任何系统都可以被看作是输入到输出的某种变换。例如,离散系统可以由下述的变换进行描述:

在离散系统之中,线性离散系统具有重要的地位。下面对线性离散系统进行简单的介绍。在此之前,读者需要理解如下的两个概念:

(1)齐次性:若对于离散系统,如果对任意的输入与给定的任意常数,恒有:

(2) 叠加性:如果系统对于输入和,输出分别为和,恒有:

则称系统满足叠加性。

【定义】线性离散系统:当离散系统同时满足齐次性与叠加性时,即:

则称此离散系统为线性离散系统。

例如,对于如下的离散系统:

线性离散系统的数学描述

对于线性离散系统来说,可以使用最一般的方式对其进行描述,如采用如下的数学方程进行描述:

或采用差分方程进行描述:

状态更新方程:

系统输出方程:

除了使用一般的方式描述线性离散系统之外,针对线性离散系统本身的特点,经常使用Z变换来描述线性离散系统。Z变换是对离散信号进行分析的一个强有力的工具,尤其是对线性离散系统。

Z变换具有多种不同的性质,这里仅介绍Z变换的如下两个性质:

(1) 线性性。所谓Z变换的线性性指的是Z变换满足下面的关系:

(2) 设离散信号 f(k) 的Z变换为 F(z),则 f(k+1) 的Z变换为 z[F(z)-f(0)]。

【例2】 对于如下的线性离散系统:

同时对等式两边进行Z变换,则有:

一般在系统分析中,往往对系统输出与系统输入的比值比较关心,将此式化成分式的形式,有:

在对系统进行描述分析时,此种形式的描述称之为滤波器描述。对上式进行等价变换,可以得到系统的传递函数描述线性系统最常用的一种描述方式:

还可以得到系统的零极点描述:

线性离散系统的Simulink描述

线性离散系统的描述方式有如下四种形式:

(1) 线性离散系统的滤波器模型:在Simulink中,滤波器表示为num=[n0 n1 n2]; den=[d0 d1];其中num表示Z变换域分式的分子系数向量,den为分母系数向量。

(2) 线性离散系统的传递函数模型:在Simulink中,系统的传递函数表示为num=[n0 n1 n2]; den=[d0 d1];

(3) 线性离散系统的零极点模型:在Simulink中,系统零极点表示为gain=K; zeros=[z1, z2]; poles=[0, p1];

(4) 线性离散系统的状态空间模型:在Simulink中,设系统差分方程为如下形式:x(n+1)=Fx(n)+Gu(n);y(n)=Cx(n)+Du(n)。其中x(n), u(n), y(n)分别为线性离散系统的状态变量、输入向量、输出向量。F,G,C,D分别为变换矩阵。在Simulink中,其表示很简单,只需要输入相应的变换矩阵F,G,C,D即可。

【例3】对于如下的线性离散系统:

在MATLAB中输入下面的语句,可以绘制出此系统的Bode图:

代码语言:javascript
复制
>>num=[2 -1 -5];
>>den=[1 3 6 2];
>>dbode(num,den,1)
>>grid;

此离散系统的Bode图如下图所示:

当然也可以用下面的语句求出系统的幅值与相位而不绘制图形:

代码语言:javascript
复制
>>[mag,phase]=dbode(num,den,1);

此外,在MATLAB中,离散系统的不同描述模型之间可以进行相互转化。这里给出几个比较常用的函数:

代码语言:javascript
复制
% 将系统传递函数模型转化为零极点模型
[zeros,poles,k]=tf2zp(num,den)


% 将系统零极点模型转化为传递函数模型。
% 其中num,den分别为系统的传递函数表示;
% zeros,poles,k为系统的零极点模型
[num,den]=zp2tf(zeros,poles,k)

至于线性离散系统的状态空间模型描述,这里不再介绍,感兴趣的读者可以参考其它有关的书籍。这里给出它与传递函数模型、零极点模型相互转化的函数命令:

代码语言:javascript
复制
% 将系统状态空间模型转化为零极点模型
[zeros,poles,k]=ss2zp(F,G,C,D) 


% 将系统零极点模型转化为状态空间模型
[F,G,C,D]=zp2ss(zeros,poles,k) 


% 将系统状态空间模型转化为传递函数模型
[num,den]=ss2tf(F,G,C,D)


% 将系统传递函数模型转化为状态空间模型
[F,G,C,D]=tf2ss(num,den)

【例4】 以下面线性离散系统为例说明系统模型的转化。

解:将传递函数模型转化为零极点模型:

代码语言:javascript
复制
>> num=[2 -1 -5];
>> den=[1 3 6 2];
>> [zeros,poles,k]=tf2zp(num,den)

结果为:

代码语言:javascript
复制
zeros =

    1.8508
   -1.3508

poles =

  -1.2980 + 1.8073i
  -1.2980 - 1.8073i
  -0.4039 + 0.0000i

k =

     2

将传递函数模型转化为状态空间模型:

代码语言:javascript
复制
>> num=[2 -1 -5];
>> den=[1 3 6 2];
>> [F,G,C,D] = tf2ss(num,den)

结果为:

代码语言:javascript
复制
F =

    -3    -6    -2
     1     0     0
     0     1     0

G =

     1
     0
     0

C =

     2    -1    -5

D =

     0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-14 08:56,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档