Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Matlab】创建连续时间模型(控制系统工具箱)

【Matlab】创建连续时间模型(控制系统工具箱)

作者头像
DevFrank
发布于 2024-07-24 06:50:03
发布于 2024-07-24 06:50:03
23600
代码可运行
举报
运行总次数:0
代码可运行

LTI线性时不变模型

控制系统工具箱™提供了用于创建线性时不变 (LTI) 模型的四个基本表示形式的函数:

  • 传递函数 (TF) 模型
  • 零极点增益 (ZPK) 型号
  • 状态空间 (SS) 模型
  • 频率响应数据 (FRD) 模型

将模型数据作为输入,这些函数就能创建对应的模型对象。

创建传递函数模型

传递函数(TF)是LTI系统的频域表示。SISO(single input single output,单输入单输出) 传递函数可以用多项式表示:

H(s) = \frac{A(s)}{B(s)} = \frac{a_{1} s^{n} + a_{2} s^{n-1} + \ldots + a_{n+1}}{b_{1} s^{m} + b_{2} s^{m-1} + \ldots + b_{m+1}}

传递函数由其分子和分母多项式指定,并且 。在 MATLAB 中,多项式由其系数的向量表示,例如,多项式:

s^{2} + 2 s + 10

,是由[1 2 10]表示的。

要创建以下表示传递函数的 TF 对象:

H(s) = \frac{s}{s^2+2s+10}

用代码表示如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
num = [ 1  0 ];       % Numerator: s
den = [ 1  2  10 ];   % Denominator: s^2 + 2 s + 10
H = tf(num,den)

生成传递函数如下:

在这里插入图片描述
在这里插入图片描述

或者用下列表达式来表示该模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = tf('s');        % Create Laplace variable 创建拉普拉斯变量
H = s / (s^2 + 2*s + 10)

会生成同样的传递函数:

在这里插入图片描述
在这里插入图片描述

创建零极点增益模型

零极点增益 (ZPK) 模型是传递函数的因式相乘形式:

H(s) = k \frac{( s - z_{1} ) \ldots ( s - z_{n} )}{( s - p_{1} ) \ldots ( s - p_{m} )}

在这个式子中,k为增益,分子的根为零点,分母的根为极点。

比如要创建这个零极点增益模型:

H(s) = \frac{-2 s}{( s - 2 ) ( s^2 - 2 s + 2 )}

指定零极点和增益如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
z = 0;                   % Zeros
p = [ 2  1+i  1-i ];     % Poles
k = -2;                  % Gain
H = zpk(z,p,k)

生成模型如下:

在这里插入图片描述
在这里插入图片描述

同样,对于 TF 模型,也可以用下列有理式来表述:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = zpk('s');
H = -2*s / (s - 2) / (s^2 - 2*s + 2)

生成结果同上:

在这里插入图片描述
在这里插入图片描述

创建状态空间模型

状态空间 (State-space,SS) 模型是 LTI 系统的时域表示:

\frac{dx}{dt} = A x(t) + B u(t)
y(t) = Cx(t) + Du(t)

其中,x(t)是状态向量,u(t)是输入向量,y(t)是输出轨迹。

状态空间模型是从描述系统动力学的微分方程推导出来的。例如,考虑一个简单电机的二阶常微分方程(ODE):

\frac{d^2\theta}{dt^2} + 2\frac{d\theta}{dt} + 5\theta = 3I

其中,I是驱动电流(输入),theta是转子角度(输出)。此 ODE 可以以状态空间形式重写为:

\frac{dx}{dt} = Ax + BI
在这里插入图片描述
在这里插入图片描述
\theta = Cx + DI
在这里插入图片描述
在这里插入图片描述

要创建此模型,创建ss状态空间矩阵并定义A、B、C、D即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
A = [ 0  1 ; -5  -2 ];
B = [ 0 ; 3 ];
C = [ 1  0 ];
D = 0;
H = ss(A,B,C,D)

生成结果如下:

在这里插入图片描述
在这里插入图片描述

创建频率响应数据模型

频率响应数据 (FRD) 模型允许您将系统的测量或仿真的复杂频率响应存储在 LTI 对象中。然后,可以将此数据用作频域分析和设计目的的替代模型。

例如,假设从频率分析器中获取以下数据:

频率(赫兹): 10, 30, 50, 100, 500 响应: 0.0021+0.0009i, 0.0027+0.0029i, 0.0044+0.0052i, 0.0200-0.0040i,0.0001-0.0021i

可以使用以下命令创建包含此数据的 FRD 对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
freq = [10, 30, 50, 100, 500];
resp = [0.0021+0.0009i, 0.0027+0.0029i, 0.0044+0.0052i, 0.0200-0.0040i, 0.0001-0.0021i];
H = frd(resp,freq,'Units','Hz')

结果如下:

在这里插入图片描述
在这里插入图片描述

频率单位为rad/s。

创建MIMO(多输入多输出模型)

tf, zpk, ss, 和 frd命令可以创建SISO 和 MIMO 两种模型。对于 TF 或 ZPK 模型,通过连接更简单的 SISO 模型来构造 MIMO 模型通常很方便。例如,可以创建 2x2 MIMO 传递函数:

H(s) = \left[ \begin{array}{cc} {1\over s+1} & 0 \\ & \\ {s+1 \over s^2+s+3} & {-4s \over s+2} \end{array} \right]

用以下代码表示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = tf('s');
H = [ 1/(s+1) , 0 ; (s+1)/(s^2+s+3) , -4*s/(s+2) ]

生成结果如下:

在这里插入图片描述
在这里插入图片描述

分析LTI(线性时不变模型)

控制系统工具箱可以用于分析 LTI 模型。这些功能的范围从简单的I/O大小和顺序查询到复杂的时间和频率响应分析。

例如,可以获取上面指定的 MIMO 传输函数的大小信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
size(H)
在这里插入图片描述
在这里插入图片描述

可以使用以下公式计算极点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pole(H)
在这里插入图片描述
在这里插入图片描述

可以使用以下命令询问此系统是否稳定:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
isstable(H)
在这里插入图片描述
在这里插入图片描述

最后,可以通过键入以下内容来绘制阶跃响应:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
step(H)
在这里插入图片描述
在这里插入图片描述

以上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Matlab】简单控制系统建模(控制系统工具箱)
控制系统应用是MATLAB和Simulink的重点应用领域,它包括了被控对象建模、控制器设计、自动代码生成部署和系统验证全流程。具体如下:
DevFrank
2024/07/24
3920
【Matlab】简单控制系统建模(控制系统工具箱)
【Matlab】创建离散时间模型(控制系统工具箱)
创建离散时间模型的语法与连续时间模型的语法类似,只是还必须提供采样时间(采样间隔以秒为单位)。
DevFrank
2024/07/24
2640
【Matlab】创建离散时间模型(控制系统工具箱)
自动控制理论笔记
\(G(s) = \frac{a}{s+a}\) \(\frac{1}{a}\)是时间常数\(\tau\),对应上升为0.63 \(4\tau\)对应阶跃响应0.98
列夫托尔斯昊
2020/08/25
2K0
自动控制理论笔记
Scipy 高级教程——控制系统分析与设计
Scipy 提供了强大的控制系统分析与设计工具,可以用于设计和分析线性时不变系统。本篇博客将深入介绍 Scipy 中的控制系统工具,并通过实例演示如何应用这些工具。
Echo_Wish
2024/01/20
2220
基于matlab的控制系统与仿真-2
image.png 试求其零极点模型和状态空间模型。 >> sys1=tf([2 18 40],[1 6 11 6 ]) sys1 = 2 s^2 + 18 s + 40 ---------------------- s^3 + 6 s^2 + 11 s + 6 Continuous-time transfer function. >> sys2=zpk(sys1) sys2 = 2 (s+5) (s+4) ----------------- (s+3)
AXYZdong
2020/10/30
4250
基于matlab的控制系统与仿真-2
【Matlab】简单PID 控制器设计(控制系统工具箱)
为了缩短响应时间,可以设置比自动选择的结果更高的目标交叉频率,即0.52。将交叉频率增加到 1.0。
DevFrank
2024/07/24
5500
【Matlab】简单PID 控制器设计(控制系统工具箱)
Simulink建模与仿真(9)-动态系统模型及其Simulink表示(连续系统模型及表示)
与离散系统不同,连续系统是指系统输出在时间上连续变化,而非仅在离散的时刻采样取值。连续系统的应用非常广泛,下面给出连续系统的基本概念。
用户9925864
2023/09/19
9480
Simulink建模与仿真(9)-动态系统模型及其Simulink表示(连续系统模型及表示)
LTI系统的冲激响应-洞悉一切
对于一个LTI系统,当其初始状态为零时,输入为单位冲激函数δ(t),所引起的响应称为单位冲激响应,简称冲激响应。通常用h(t)表示。
云深无际
2024/11/11
3500
LTI系统的冲激响应-洞悉一切
现代控制理论习题解答与Matlab程序示例
http://download.csdn.net/detail/zhangrelay/9544934
zhangrelay
2019/01/23
1.6K0
Transformers是SSMs:通过结构化状态空间对偶性的广义模型和高效算法(一)
尽管Transformer一直是深度学习在语言建模中取得成功的主要架构,但最近的研究表明,如Mamba之类的状态空间模型(SSMs)在小到中等规模上能够匹敌或超越Transformer的性能。我们表明,这两类模型实际上是非常相关的,并在一个经过充分研究的结构化半可分离矩阵类的各种分解之间,发展出SSM和注意力变体之间丰富的理论联系框架。我们的状态空间对偶性(SSD)框架使我们能够设计一种新的架构(Mamba-2),其核心层是对Mamba的选择性SSM的改进,速度提高了2-8倍,同时在语言建模方面继续与Transformer保持竞争力。
AI浩
2024/10/22
3570
Transformers是SSMs:通过结构化状态空间对偶性的广义模型和高效算法(一)
现代控制理论(机器人方向)考核要求与Matlab(Octave)简明教程
版权声明:本文为zhangrelay原创文章,有错请轻拍,转载请注明,谢谢... https://blog.csdn.net/ZhangRelay/article/details/88654172
zhangrelay
2019/04/09
8040
现代控制理论(机器人方向)考核要求与Matlab(Octave)简明教程
MATLAB系统辨识工具箱
点击Estimate,选择需要辨识的系统模型的结构,这里选择Transfer Function Models传递函数模型
用户9925864
2022/07/27
1.5K0
MATLAB系统辨识工具箱
动态系统建模与仿真MATLAB Simulink的应用案例
动态系统建模与仿真是工程、控制、物理等领域中的重要研究方向。MATLAB Simulink提供了一种直观的图形化环境,使得建模与仿真变得更加高效。本文将深入探讨动态系统建模的基本概念,并通过具体的应用案例展示如何使用MATLAB Simulink进行动态系统的建模与仿真。
一键难忘
2025/01/08
5400
Matlab pid参数调节工具箱
4、在结果可以实时看到控制的输出,通过调节系统的响应和鲁棒性,直到满足自己的期望,
用户9925864
2022/07/27
1.1K0
Matlab pid参数调节工具箱
扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)「建议收藏」
我们上篇提到的 卡尔曼滤波(参见我的另一篇文章: 卡尔曼滤波理论讲解与应用(matlab和python))是用于线性系统,预测(运动)模型和观测模型是在假设高斯和线性情况下进行的。简单的卡尔曼滤波必须应用在符合高斯分布的系统中,但是现实中并不是所有的系统都符合这样 。另外高斯分布在非线性系统中的传递结果将不再是高斯分布。那如何解决这个问题呢?扩展卡尔曼滤波就是干这个事的。
全栈程序员站长
2022/07/04
2K0
扩展卡尔曼滤波(EKF)理论讲解与实例(matlab、python和C++代码)「建议收藏」
PID控制算法仿真_连续控制系统的充分必要条件
PID控制是将误差信号e(t)的比例(P),积分(I)和微分(D)通过线性组合构成控制量进行控制,其输出信号为:
全栈程序员站长
2022/08/03
1K0
PID控制算法仿真_连续控制系统的充分必要条件
IIR 数字滤波器三种结构形式的MATLAB实现
一.实验目的 1. 掌握IIR 数字滤波器设计的方法; 2. 掌握IIR 数字滤波器直接型、级联型和并联型的基本特点并根据给定的传递函数形式正 确选择是否采用直接型、级联型和并联型。 3. 熟悉直接型、级联型和并联型软件实现的编程方法。 二.实验原理 一个IIR 滤波器的系统函数给出为:
timerring
2022/07/20
2.2K0
IIR 数字滤波器三种结构形式的MATLAB实现
Python实现所有算法-音频过滤器.下(巴特沃斯)
上节简单的写了一下音频滤波器的定义和作用。而这篇文章将主要集中精力在巴特沃斯过滤器上,在末尾将会给出:使用 Butterworth 设计的二阶 IIR 滤波器。
云深无际
2022/08/05
6490
Python实现所有算法-音频过滤器.下(巴特沃斯)
北邮通信原理知识点笔记小结-上半部分
数字通信比模拟通信有着更强的抗干扰能力,可以消除噪声积累,便于集成化、加密性能好,但是代价是什么呢?
Fisherman渔夫
2020/02/19
2K0
25考研机械复试面试 常见问答问题汇总 材料力学及控制工程篇
                                                第一部分:材料力学
啦啦javy
2024/10/17
4073
25考研机械复试面试 常见问答问题汇总 材料力学及控制工程篇
推荐阅读
相关推荐
【Matlab】简单控制系统建模(控制系统工具箱)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档