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

Simulink建模与仿真(9)-动态系统模型及其Simulink表示(连续系统模型及表示)

作者头像
用户9925864
发布于 2023-09-19 08:22:26
发布于 2023-09-19 08:22:26
93700
代码可运行
举报
运行总次数:0
代码可运行

连续系统的基本概念

与离散系统不同,连续系统是指系统输出在时间上连续变化,而非仅在离散的时刻采样取值。连续系统的应用非常广泛,下面给出连续系统的基本概念。

【定义】 连续系统。

满足如下条件的系统为连续系统:

(1) 系统输出连续变化。变化的间隔为无穷小量。

(2) 对系统的数学描述来说,存在系统输入或输出的微分项(导数项)。

(3) 系统具有连续的状态。在离散系统中,系统的状态为时间的离散函数,而连续系统的状态为时间连续量。

连续系统的数学描述

设连续系统的输入变量为u,其中t为连续取值的时间变量,设系统的输出为y;由连续系统的基本概念可以写出连续系统的最一般的数学描述,即:

系统的实质为输入变量到输出变量的变换,注意这里系统的输入变量与输出变量既可以是标量(单输入单输出系统),也可以是向量(多输入多输出系统);而且在系统的数学描述中含有系统输入或输出的导数。

除了采用最一般的数学方程描述连续系统外,还可以使用连续系统的微分方程形式对连续系统进行描述,即:

这里分别为连续系统的状态变量、状态变量的微分。对于线性连续系统来说,由连续系统的微分方程描述可以容易地推导出连续系统的状态空间模型。这与使用差分方程对离散系统进行描述相类似。下面举例说明连续系统的数学描述。

【例1】 对于如下的连续系统:

显然此系统为单输入单输出连续系统,且含有输入变量的微分项。由此方程可以很容易得出系统的输出变量为:

连续系统的Simulink描述

前面给出了连续系统的基本概念与系统的基本描述方法:数学方程描述与微分方程描述。本部分使用【例1】给出的连续系统:

说明如何利用Simulink对连续系统进行描述,并在此基础上对连续系统进行简单分析。与前面类似,在此并不建立系统的Simulink模型进行仿真,而是采用编写M脚本文件从原理上对连续系统进行说明,并进行简单的仿真。

【例2】 编写脚本文件systemdemo3.m,对【例1】中的连续系统进行分析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t=0:0.1:5;      %系统仿真范围,时间间隔为0.1 s
ut=t+sin(t);    %系统输入变量
utdot=1+cos(t); %系统输入变量的导数
yt=ut+utdot;    %系统输出
plot(yt);grid;  %绘制系统输出曲线

下图为此连续系统在时间[0, 5]内的输出曲线。由此可见,使用简单的MATLAB语句可对系统性能进行简单的分析。

线性连续系统

在介绍线性离散系统时,已经给出线性系统的基本概念,这里做一个简单的回顾并介绍线性连续系统的概念。连续系统可以用如下的方式来表达:

【定义】 线性连续系统。

如果一个连续系统能够同时满足如下的性质:

(1) 齐次性。对于任意的参数,系统满足:

(2) 叠加性。对于任意输入变量与,系统满足:

则此连续系统为线性连续系统。

下面举例说明,如对【例1】中的连续系统:

线性连续系统的数学描述

线性连续系统最一般的描述为连续系统的输入输出方程形式,也可以使用连续系统的微分方程模型进行描述:

除了使用这两种连续系统通用的形式描述线性连续系统之外,还可以使用传递函数、零极点模型与状态空间模型对其进行描述。与线性离散系统相类似,线性连续系统的传递函数模型与零极点模型采用连续信号的拉氏变换来实现。

拉氏变换具有如下两个性质:

(1) 线性性。即对于连续信号和,设它们的拉氏变换分别为与,则拉氏变换的线性性是指拉氏变换满足下面的关系:

(2) 设连续信号的u(t)拉氏变换为U(s),则u'(t)的拉氏变换为sU(s),u''(t)的拉氏变换为s²U(s)。

同时对等式的两边进行拉氏变换,将其化为分式的形式,则有

这便是系统的传递函数模型。

一般来说,线性连续系统的拉氏变换总可以写成如下传递函数的形式:

将其进行一定的等价变换,可以得出线性连续系统的零极点模型:

其中z1为线性连续系统的零点,p1、p2为系统的极点,k为系统的增益。

线性连续系统的另外一种模型为状态空间模型。前面已经提到,对于线性连续系统,使用其微分方程很容易推导出系统的状态空间模型。这里给出线性连续系统用状态空间模型进行描述的一般方式:

其中, 为线性连续系统的状态变量,分别为系统的输入与输出变量,可以为标量,也可以为向量。下面介绍如何在Simulink中实现对线性连续系统的描述。

线性连续系统的Simulink描述

一般来说,在Simulink中对线性连续系统的描述方式有以下三种:

(1) 线性连续系统的传递函数模型描述:在Simulink中,传递函数表示为num=[n0,n1];den=[d0,d1,d2]; 其中num表示传递函数的分子系数向量,den为分母系数向量。

(2) 线性连续系统的零极点模型描述:在Simulink中,零极点模型表示为gain=k; zeros=z1; poles=[p1,p2];其中gain表示系统增益,zeros表示系统零点,poles表示系统极点。

(3) 线性连续系统的状态空间模型描述:如果系统的状态空间表示为

则在Simulink中直接输入变换矩阵A,B,C,D即可。

一般来说,线性连续系统的不同模型之间可以相互转化,MATLAB中有内置的函数可以完成线性连续系统模型间的转化。我们在线性离散系统模型间转化中已经做了介绍,这里仅列出这些函数原型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[zeros,poles,k]=tf2zp(num,den);
[num,den]=zp2tf(zeros,poles,k)[zeros,poles,k]=ss2zp(A,B,C,D);
[A,B,C,D]=zp2ss(zeros,poles,k)
[num,den]=ss2tfA,B,C,D)
[A,B,C,D]=tf2ss(num,den)

【例3】 对于如下采用传递函数模型进行描述的线性连续系统:

要求绘制此系统的Bode图、Nyquist图,并求取系统的零极点模型与状态空间模型描述。

解:在MATLAB中输入下面的语句即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>num=[1, -3];
>>den=[2, -3, -5];
>>w=logspace(-1, 1);
>>subplot(2,1,1); 
>>bode(num, den, w);
>>subplot(2,1,2);
>>nyquist(num,den,w);
>>[zeros, poles, k]=tf2zp(num,den)
>>[A,B,C,D]=tf2ss(num,den)

系统的Bode图与Nyquist图如下图所示。

系统的零极点模型与状态空间模型如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>zeros =
3
poles =
2.5000
-1.0000
k =
0.5000
A =
1.5000 2.5000
1.0000 0
B =
1
0
C =
0.5000 -1.5000
D =
0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-18 21:56,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VUE和Spring Boot 实现加密
采用请求前拦截操作,encrypt(JSON.stringify(config.data))
ruochen
2021/12/16
3.5K0
srpingboot接口数据加密(参数和返回结果)
1、我这里使用的是rsa进行的加密解密。由于springboot中的rsa-encrypt-body-spring-boot 这个限制比较大。所有这里我们使用实现接口方法自定义加密解密。
高大北
2022/12/18
1.9K1
srpingboot接口数据加密(参数和返回结果)
如何优雅的实现 Spring Boot 接口参数加密解密?
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2021/03/16
2.2K0
SpringMVC系列第18篇:强大的RequestBodyAdvice解密
在实际项目中,有时候我们需要在请求之前或之后做一些操作,比如:对参数进行解密,对所有的返回值进行加密等。这些与业务无关的操作,我们没有必要在每个 controller 方法中都写一遍,这里我们就可以使用 springmvc 中的@ControllerAdvice 和 RequestBodyAdvice、ResponseBodyAdvice 来对请求前后进行处理,本质上就是 aop 的思想。
路人甲Java
2021/10/20
3.1K0
第三十七章:基于SpringBoot架构以及参数装载完成接口安全认证
在上一章第三十六章:基于SpringBoot架构重写SpringMVC请求参数装载中我们说到了怎么去重写SpringMVC参数装载,从而来完成我们的需求。本章内容会在上一章的基础上进行修改! 企业中接口编写是再频繁不过的事情了,现在接口已经不仅仅用于移动端来做数据服务了,一些管理平台也同样采用了这种方式来完成前后完全分离的模式。不管是接口也好、分离模式也好都会涉及到数据安全的问题,那我们怎么可以很好的避免我们的数据参数暴露呢? 本章目标 基于SpringBoot平台实现参数安全传输。 SpringBoot
恒宇少年
2018/06/27
1.5K0
全局响应返回处理
上代码: import io.github.vampireachao.stream.core.optional.Opp; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server
阿超
2022/08/21
5730
基于SpringBoot的AES加密算法接口处理
Advanced Encryption Standard缩写:AES,译为高级加密标准。
关忆北.
2021/12/07
3.1K0
基于SpringBoot的AES加密算法接口处理
Java使用拦截器的两种方式
可以看出来,这个不是真正意义上的拦截器,而只是功能来说是拦截数据(面向切面编程);
JQ实验室
2022/02/09
4490
Spring MVC ControllerAdvice深入解析
  Spring 在3.2版本后面增加了一个ControllerAdvice注解。网上的资料说的都是ControllerAdvice配合ExceptionHandler注解可以统一处理异常。而Spring MVC是如何做到的资料却比较少,下面会先给出使用的例子和踩过的一个坑。然后进行相应的源码分析,之后再介始ControllerAdvice另外的两种使用方式。
良辰美景TT
2018/09/11
1.5K0
Spring 使用 RequestBodyAdvice 来实现请求参数的加解密预处理
以上的解决方案都能解决我们的问题,这里不一一介绍每个方案是怎么实现的,主要讲一下 RequestBodyAdvice 的使用
双鬼带单
2021/04/13
5.6K0
Spring 使用 RequestBodyAdvice 来实现请求参数的加解密预处理
Spring Boot REST 风格 API 接口 JWT Token 认证
1 能够有选择地过滤没有权限(Token)的请求 2 Token 具有时效性 3 如果用户连续操作,Token 能够自动刷新(自动延长有效期)
Java宝典
2021/01/14
1.8K0
SpringBoot 实现 RAS+AES 自动接口解密
目前常用的加密方式就对称性加密和非对称性加密,加密解密的操作的肯定是大家知道的,最重要的使用什么加密解密方式,制定什么样的加密策略;考虑到我技术水平和接口的速度,采用的是RAS非对称加密和AES对称加密一起用!!!!
程序员蜗牛
2024/05/10
2330
SpringBoot 实现 RAS+AES 自动接口解密
Spring Boot 无侵入式 实现 API 接口统一 JSON 格式返回
无侵入式 统一返回JSON格式 其实本没有没打算写这篇博客的,但还是要写一下写这篇博客的起因是因为,现在呆着的这家公司居然没有统一的API返回格式?,询问主管他居然告诉我用HTTP状态码就够用了(fx
架构师修炼
2020/11/19
1.2K0
Springboot统一返回接口+统一异常处理+后端参数校验
引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </
用户5546570
2020/09/17
3.8K0
Springboot统一返回接口+统一异常处理+后端参数校验
优美的统一返回结果处理
我们写项目一般都会自己写一个Result对象,然后去处理,但是有一个问题,逐渐的接口写多了之后
用户10136162
2022/11/15
7790
优美的统一返回结果处理
Spring Boot 自定義 HttpMessageConverter 解決 String 類型返回JSON對象問題
HttpMessageConverter 接口介绍 org.springframework.http.converter.HttpMessageConverter 是一个策略接口,接口说明如下:
一个会写诗的程序员
2020/08/26
2.2K0
Spring Boot 自定義 HttpMessageConverter 解決 String 類型返回JSON對象問題
Spring Boot 无侵入式 实现API接口统一JSON格式返回
2020年Java原创面试题库连载中 【000期】Java最全面试题库思维导图 【020期】JavaSE系列面试题汇总(共18篇) 【028期】JavaWeb系列面试题汇总(共10篇) 【042
java进阶架构师
2020/10/23
1.5K0
Spring Boot 无侵入式 实现API接口统一JSON格式返回
前后端分离 , 如何保证接口安全性 ?
用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。
Jensen_97
2023/07/20
2.6K0
前后端分离 , 如何保证接口安全性 ?
一文弄懂spring validate​
校验参数在以前基本都是使用大量的if/else,稍微方便一点的可以使用反射+自定义注解的形式,但是复用性不是很好,并且每个人对于的自定义注解有着自己的使用习惯,不过好在spring开发了validated框架用于注解校验,可以节省很多的校验ifelse代码,这篇文章通篇介绍了如何使用spring validated。
阿东
2021/08/16
3.9K0
拿去用,接口统一返回值,最简单的一种实现
上一篇中介绍了 RequestBodyAdvice 接口,可以对@RequestBody 进行增强,本文介绍另外一个相似的接口:ResponseBodyAdvice,这个可以对@ResponseBody 进行增强,可以拦截@ResponseBody 标注的方法的返回值,对返回值进行统一处理,比如进行加密、包装等操作;比如通过他可以实现统一的返回值。
路人甲Java
2021/10/20
1.3K0
推荐阅读
相关推荐
VUE和Spring Boot 实现加密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验