关于线性连续系统转换到离散系统的方法

虽然通常在分析设计控制器时,总是针对连续系统设计的。但是若要将其在实际工程中应用起来,则免不了需要将它转换为离散的形式。本文主要对连续系统转换到离散系统的几种方法进行了汇总,便于之后的翻阅。

参考资料:

  • 状态空间方程的离散化 - 知乎 (zhihu.com)
  • (55条消息) 如何将连续系统状态空间方程离散化_Let’sCode的博客-CSDN博客_连续状态空间方程离散化
  • Optimal State Estimation Kalman, H Infinity, and Nonlinear Approaches (Dan Simon)

1.传递函数

线性连续系统的一种重要的表示形式为传递函数。将传递函数进行离散化的方法就是z变换,将传递函数中的"s"变量全部用"z"替换即可。
G(s)⟶G(z)G(s) \longrightarrow G(z) G(s)⟶G(z)
常见的三种"s"与"z"的对应关系分别如下所示,其中TTT表示采样时间。

  • 前项差分变换
    z=1+Ts(1)z=1+Ts \tag{1} z=1+Ts(1)

  • 后项差分变换
    z=11−Ts(2)z=\frac{1}{1-Ts} \tag{2} z=1−Ts1​(2)

  • 双线性变换(Tustin变换)
    z=1+Ts/21−Ts/2(3)z=\frac{1+Ts/2}{1-Ts/2} \tag{3} z=1−Ts/21+Ts/2​(3)

2.状态空间方程

线性连续系统的另一种重要的表示形式为状态空间方程。一般来说,将状态空间方程进行离散化的方法有两种,分别为欧拉法和零阶保持法。下面分别进行介绍。
{x˙=Ax+Buy=Cx+Du⟶{x(k+1)=Azx(k)+Bzu(k)y(k)=Czx(k)+Dzu(k)\begin{cases} \dot{x}=Ax+Bu \\ y=Cx+Du \end{cases} \longrightarrow \begin{cases} x(k+1)=A_zx(k)+B_zu(k) \\ y(k)=C_zx(k)+D_zu(k) \end{cases} {x˙=Ax+Buy=Cx+Du​⟶{x(k+1)=Az​x(k)+Bz​u(k)y(k)=Cz​x(k)+Dz​u(k)​

2.1.欧拉法

欧拉法利用了泰勒展开式的一阶近似,将状态导数表示为了如下形式
x˙=x(k+1)−x(k)T(4)\dot{x}=\frac{x(k+1)-x(k)}{T} \tag{4} x˙=Tx(k+1)−x(k)​(4)
将上式代入状态空间方程,可以得到离散化状态空间方程
{x(k+1)=Azx(k)+Bzu(k)y(k)=Czx(k)+Dzu(k)(5)\begin{cases} x(k+1)=A_zx(k)+B_zu(k) \\ y(k)=C_zx(k)+D_zu(k) \end{cases} \tag{5} {x(k+1)=Az​x(k)+Bz​u(k)y(k)=Cz​x(k)+Dz​u(k)​(5)
上式中,Az=I+TA,Bz=TB,Cz=C,Dz=DA_z=I+TA,B_z=TB,C_z=C,D_z=DAz​=I+TA,Bz​=TB,Cz​=C,Dz​=D。

2.2.零阶保持法

我们知道,线性系统的状态空间方程的解可以表示为
x(t)=eA(t−t0)x(t0)+∫t0teA(t−τ)Bu(τ)dτ(6)x(t)=e^{A(t-t_0)}x(t_0)+\int_{t_0}^t{e^{A(t-\tau)}Bu(\tau)d\tau} \tag{6} x(t)=eA(t−t0​)x(t0​)+∫t0​t​eA(t−τ)Bu(τ)dτ(6)
上式中,eA(t−t0)e^{A(t-t_0)}eA(t−t0​)表示系统的状态转移矩阵,eAe^AeA的形式称为矩阵指数。

定义时间间隔为T=tk+1−tkT=t_{k+1}-t_{k}T=tk+1​−tk​,且假设在时间间隔内A(t),B(t),u(t)A(t),B(t),u(t)A(t),B(t),u(t)保持不变。则式(6)可以写成
x(tk+1)=eATx(tk)+∫0TeA(T−τ)dτBu(tk)=eATx(tk)+eAT∫0Te−AτdτBu(tk)(7)\begin{aligned} x(t_{k+1})&=e^{AT}x(t_k)+\int_{0}^T{e^{A(T-\tau)}d\tau}Bu(t_k) \\ &=e^{AT}x(t_k)+e^{AT}\int_{0}^T{e^{-A\tau}d\tau}Bu(t_k) \end{aligned} \tag{7} x(tk+1​)​=eATx(tk​)+∫0T​eA(T−τ)dτBu(tk​)=eATx(tk​)+eAT∫0T​e−AτdτBu(tk​)​(7)
由式(7)可以确定,Az=eAT,Bz=eAT∫0Te−AτdτBA_z=e^{AT},B_z=e^{AT}\int_{0}^T{e^{-A\tau}d\tau}BAz​=eAT,Bz​=eAT∫0T​e−AτdτB。

在计算矩阵BzB_zBz​时,由于存在矩阵指数的积分运算,在实际使用时可能会比较麻烦。当矩阵AAA可逆时,矩阵指数的积分运算可以进行简化,如式(8)所示。具体推导过程详见Optimal State Estimation Kalman, H Infinity, and Nonlinear Approaches
∫0Te−Aτdτ=[I−e−AT]A−1(8)\int_{0}^T{e^{-A\tau}d\tau}=[I-e^{-AT}]A^{-1} \tag{8} ∫0T​e−Aτdτ=[I−e−AT]A−1(8)
以上介绍的两种离散化方法中,零阶保持法在精确度和稳定性方面优于欧拉法。

关于线性连续系统转换到离散系统的方法相关推荐

  1. matlab c2d 零阶保持器,计控实验二 连续系统变换为离散系统

    实验二 连续系统变换为离散系统 一.实验目的 在对连续系统进行实时计算机控制时,往往需要把连续系统转换成离散系统. 二.实验指导 为了得到连续系统的离散化数学模型,Matlab 提供了c2d()函数. ...

  2. 状态空间离散化matlab,现代控制理论:3.4g 线性连续系统状态空间模型的离散化...

    <现代控制理论:3.4g 线性连续系统状态空间模型的离散化>由会员分享,可在线阅读,更多相关<现代控制理论:3.4g 线性连续系统状态空间模型的离散化(24页珍藏版)>请在人人 ...

  3. 状态空间离散化matlab,线性连续系统状态空间模型的离散化.ppt

    线性连续系统状态空间模型的离散化 * * * * * * * * * * * * * * * * * * * * Ch.3 线性系统的时域分析 目录(1/1) 目 录 概述 3.1 线性定常连续系统状 ...

  4. Python解决控制问题系列之二:线性连续系统最优控制问题

    Python解决控制问题系列之二:线性连续系统最优控制问题 文章目录 Python解决控制问题系列之二:线性连续系统最优控制问题 1. 前言 2. 线性系统问题描述 3. Python 编程 3.1 ...

  5. 连续系统离散化的几种方法

    参考鹏飞亿里的文章<一文书尽离散化--连续系统离散化原理及应用> 讲离散化方法之前,首先先描述一下离散系统和连续系统 上图为连续信号控制系统框图,R(s)为输入信号,Y(s)为输出信号,E ...

  6. 线性连续系统matlab仿真,东大20秋学期《控制系统 Simulink 仿真》在线平时作业【答案满分】...

    20秋学期<控制系统 Simulink 仿真>在线平时作业1 试卷总分:100  得分:100 一.单选题 (共 10 道试题,共 50 分) 1.下列对仿真步长的理解正确的是 A.仿真起 ...

  7. 利用matlab快速实现连续系统转变为离散系统(z变换)

    matlab为连续系统提供了离散化模型.利用c2d()函数可实现连续函数的快速离散化.c2d()函数的调研格式为: sysd=c2d(sys,Ts)或 sysd=c2d(sys,Ts,method). ...

  8. 如何将连续系统状态空间方程离散化

    差分变换 连续系统转化为离散系统的方法之-- z变换.z变换主要研究如何将连续系统传递函数G(s) 转化为离散传递函数 G(z).就是找到一个s和z的关系,直接将G(s)中的s全部替换为z便大功告成. ...

  9. 连续系统与离散系统传递函数的求解问题

    文章目录 1 Z变换的定义与常见激励的Z变换求解 1.1 定义 1.2 单位样值函数 1.3 单位阶跃序列 1.4 斜变序列 1.4.1 间接求导法 1.4.2 错位相减法 1.5 指数序列 1.6 ...

最新文章

  1. 异常记录-No module named ‘numpy.core._multiarray_umath
  2. linux 挂载网络文件系统,linux 挂载网络文件系统
  3. telnet命令的使用
  4. mybatis多对一处理两种处理方式
  5. Thread和Runnable的区别
  6. ewebeditor未授权:功能被禁用请先配置授权_SteamPY新功能——外区账号礼物自动领取...
  7. python实现拆分、合并、删除pdf
  8. 生成子集——位向量法
  9. 笔记随笔1(webpack,vue-router,vuex)
  10. 国际C 语言乱码大赛(IOCCC )
  11. 被Gartner评为十大安全技术的IAST是什么
  12. 2019年日本上班的你必须知道的社会保障和源泉所得税
  13. 7-9 旅游规划 (25 分)Dijkstra算法,单源最短路径算法
  14. PTA(接口)用java写 7-10 房屋、住宅、写字楼类
  15. Java在线打开编辑PPT文档
  16. android usb投影win10,win10如何投影到安卓平板上
  17. Ubuntu 命令行安装chrome
  18. 学计算机和英语哪个好考,英语不好,学计算机哪方面比较好?
  19. 期货价格怎么算出来的?
  20. 都2021年了!为什么一遇到热点事件,微博就会时不时的崩一下?

热门文章

  1. 【转】关于NFS讨论 参数说明
  2. 回答一下这 10 个最常见的 Javascript 问题
  3. PageRank、图计算、图存储的两种方式
  4. AngularJS 0005:作用域
  5. MVC调用部分视图PartialView
  6. oppor15x手机android版本,OPPO R15x手机系统升级和降级的方法汇总
  7. 用户用机中的opac计算机,书目查询
  8. python 鼠标 自动点击_利用python模拟鼠标点击自动完成工作,提升你的工作效率!...
  9. dhtmlxScheduler日程安排控件
  10. window应用在linux运行,如何在Linux上运行Windows应用程序?