线性系统理论及应用GUI设计及仿真

目录

1.控制系统的状态空间模型

1.1.状态空间模型

1.2 传递函数模型

1.3 传递函数转换为状态空间模型

1.4.状态空间模型转换为传递函数

1.5.状态空间模型转化为约当标准型

2.线性系统的时域分析

2.1.矩阵指数函数的计算

2.2.线型定常连续系统的状态空间模型求解

3.线性系统能控性和能观性

3.1.状态能控性判定

3.2.状态能观性的判定

3.3.能控标准型与能观标准型

3.4 按能控标准型分解和按能观标准型分解

3.5.最小实现函数

4.李雅普诺夫稳定性分析

4.1.对称矩阵正定性的判定

4.2.连续系统李雅普诺夫判定

4.3.离散系统李雅普诺夫方程求解

5.线性系统综合

5.1反馈控制系统的模型计算

5.2.系统状态反馈极点配置

5.3降维观测器设计

本文界面设计主要基于MATLAB GUI平台,结合控制系统基础理论和MATLAB控制系统工具箱,实现了用于线性系统理论及应用界面的设计。主要包括: 控制系统的状态空间模型,线性系统的时域分析,线性系统能控性和能观性,李雅普诺夫稳定性分析和线性系统综合。

1.控制系统的状态空间模型

1.1.状态空间模型

已知线型定常连续系统Σ(A,B,C,D),可调用函数ss(·)建立其状态空间模型,调用格式为:sys=ss(A,B,C,D)。

已知线型定常离散系统Σ(G,H,C,D),可调用函数ss(·)建立其状态空间模型,调用格式为:sys=ss(G,H,C,D,Ts)。其中,Ts为采样周期,输出sys为离散系统的状态空间描述。

                  图2 仿真界面 

GUI界面的输入框和选择框上输入各输入项和选择项,按“确定”键,则有如图2所示的仿真界面输出。

1.2 传递函数模型

num=(bm,bm-1, … , b0)

den=(1,an-1, … , a0)

单输入单输出线型定常连续系统的调用格式为:

sys=tf(num,den)

单输入单输出线型定常离散系统的调用格式为:

sys=tf(num,den,Ts)

            图3 传递函数模型

1.3 传递函数转换为状态空间模型

[A,B,C,D]=tf2ss(num,den)

执行该命令后,输出为状态空间模型的系数矩阵A,B,C,D。

 图4 传递函数转换为状态空间模型

1.4.状态空间模型转换为传递函数

[num,den]=ss2tf(A,B,C,D)

执行该命令后,输出为传递函数分子和分母多项式的系数数组num,den。

图5 状态空间模型转换为传递函数

1.5.状态空间模型转化为约当标准型

[P,J]=jordan(A)

其中,J是A的约当标准型,P是将A变换为J的线性变换矩阵。

    图6 状态空间模型转化为约当标准型

2.线性系统的时域分析

2.1.矩阵指数函数的计算

(1)对eAt进行数值计算时:eAt=expm(A)

计算结果如图1所示

           图7 eAt数值计算

(2)对eAt进行符号计算时:eAt=expm(A)

其中,t为符号变量,表达式A*t为MATLAB的符号矩阵。

          图8 eAt符号计算

2.2.线型定常连续系统的状态空间模型求解

(1)任意输入的系统响应函数lsim()

[y,t,x]=lsim( sys,u,t,x0)

其中,sys为系统的状态空间模型,t为时间坐标数组,u为输入信号对应于t的各时刻输入信号采样值组成的数组,x0为初始状态向量。

        图9 任意输入的系统响应

(2)初始状态响应函数initial()

[y,t,x] = initial(sys,x0,t)

其中sys为输入的状态空间模型;x0为给定的初始状态;t为指定仿真计算状态响应的时间区间变量(数组)。

         图10 初始状态响应

(3)连续系统离散化

将连续系统的传递函数模型和状态空间模型变换为离散系统的传递函数模型和状态空间模型,其主要调用格式为

sysd = c2d(sys,Ts,method)

其中,sys为输入的连续系统传递函数模型或状态空间模型;

sysd为离散化所得的离散系统传递函数模型或状态空间模型;

Ts为采样周期;

method为离散化方法选择变量,它可以为zoh、foh、tustin和matched等,分别对应于基于0阶和1阶保持器的离散化法、双线性法和零极点匹配法。

     图11 连续系统离散化

3.线性系统能控性和能观性

3.1.状态能控性判定

Qc=ctrb(A,B)

Qc=ctrb(sys)

其中,第一种输入格式为直接给定系统矩阵A和输入矩阵B,第二种格式为给定状态空间模型sys。

输出矩阵Qc为计算所得的能控性矩阵。

基于能控性矩阵函数ctrb()及能控性矩阵Qc的秩的计算,就可以进行连续线性定常系统的状态能控性的代数判据判定。

k=rank(A)

k=rank(A,tol)

其中,A为输入矩阵,输出k为A的秩。

d=size(X)

m=size(X,dim)

[d1,d2,d3,...,dn]=size(X)

其中,输出d为数组X的各维的大小组成的一维数组;m为数组X的第dim维的大小;d1,d2,d3,…,dn为数组X的各维的大小。

          图11 状态能控性判定

3.2.状态能观性的判定

Qo=obsv(A,C)

Qc=obsv(sys)

其中,第一种输入格式为直接给定系统矩阵A和输入矩阵C,第二种格式为给定状态空间模型sys。

输出矩阵Qo为计算所得的能观性矩阵。

基于能观性矩阵函数obsv()及能观性矩阵Qo秩的计算,就可以进行连续和离散线性定常系统的状态能观性的代数判据判定

图12 连续系统状态能控性判定

图13 离散系统状态能控性判定

3.3.能控标准型与能观标准型

MATLAB提供的建立系统标准型的函数cannon(·)只能用于建立对角线标准型和单输入单输出能控标准型。

图14 能控规范Ⅰ形

3.4 按能控标准型分解和按能观标准型分解

MATLAB提供了.按能控标准型分解的函数ctrbf(·)和按能观标准型分解的函数obsvf(·)。

图15 能控性分解

图16 能观性分解

3.5.最小实现函数

G_minreal=minreal(G)

其中,G_minreal为系统的最小实现,G为系统的状态空间模型。

             图17 最小实现

4.李雅普诺夫稳定性分析

4.1.对称矩阵正定性的判定

A_eig=eig(A)

其中A_eig为矩阵A的全部特征值构成的向量。

判别矩阵P的正定性也可利用上述函数,若特征值全部大于0,则P正定。

另一种判定矩阵正定性的函数posit_def()的主要调用格式为

sym_P=posit_def(P)

其中,输入矩阵P须为对称矩阵,

输出sym_P为描述矩阵P的符号串。

输出sym_P为'positive', 'nonnegat','negative','nonposit'和'undifini'分别表示输入矩阵P为正定、非负定(半正定)、负定、非正定(半负定)与不定。

图18 对称矩阵正定性的判定

4.2.连续系统李雅普诺夫判定

求解连续系统李雅普诺夫方程ATP+PA=-Q中的对称矩阵P,调用格式为:

P=lyap(A',Q)

图19 连续系统李雅普诺夫判定

4.3.离散系统李雅普诺夫方程求解

求解离散系统李雅普诺夫方程GTPG-P=-Q中的对称矩阵P,调用格式为:

P=dlyap(G',Q)

图20 离散系统李雅普诺夫判定

5.线性系统综合

5.1反馈控制系统的模型计算

基于反馈系统模型函数fdb_model (),可方便地求解闭环控制系统的状态空间模型和传递函数模型。函数fdb_model()的调用格式为:

clsys = fdb_model(sys,K,H,type1,type2)

其中,sys为状态空间模型;K为反馈矩阵;H为前馈矩阵。

图21 反馈控制系统的模型计算

5.2.系统状态反馈极点配置

对于单输入线性定常系统Σ0(A,b):

K=acker(A,b,p)

其中,p为闭环系统期望极点构成的一维数组,输出K为状态反馈矩阵。

其中,p为闭环系统期望极点构成的一维数组,输出K为状态反馈矩阵。该函数既可用于单输入系统,也可适用于多输入系统。

图22 极点配置

5.3降维观测器设计

降维观测器仿真函数rdobsv_lsim(),

函数obsv_lsim()的调用格式为[yt,eyt,t,xt,ext]=obsv_lsim(sys,G,u,t,x0,ex0)

其中,输入格式的sys为被控对象模型,G为状态观测器增益矩阵,

x0和ex0分别为被控对象和状态观测器的初始状态,

u和t分别为被控系统的输入信号采样序列和时间数组;

输出格式的yt和xt为被控对象的输出响应和状态响应, eyt和ext分别为状态观测器的输出和状态的估计值。

图23 降维观测器设计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Nature》文章:ChatGPT帮助我学术写作的三种方式

图片翻译 ** 文章内容** 忏悔时间:我使用生成式人工智能(AI)。尽管在学术界关于聊天机器人是积极力量还是消极力量的争论不休,但我几乎每天都使用这些工具来完善我所写论文中的措辞,并寻求对我被要求评估的工作进行替…

Mysql-常用函数及其用法总结

1、字符串函数 测试用例如下: 1.1 CONCAT() 将多个字符串连接成一个字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望结果:John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…

算法012:将x减到0的最小操作数

将x减到0的最小操作数. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/ 这个题使用到的是滑动窗口。 乍一看&#xff0c…

纹波和噪声的介绍以及区别

纹波和噪声的介绍 纹波和噪声都是在电源输出中出现的信号波动,但两者存在明显的区别。   纹波:是附着于直流电平之上的包含周期性与随机性成分的杂波信号。在额定输出电压、电流的情况下,纹波指的是输出电压中的交流电压的峰值 。狭义上的纹…

生产调度:flowshop问题数学建模

接上一篇文章,在了解生产调度问题的背景和基本概念之后,我想先从比较基础的 flowshop和 jobshop 数学模型入手,理解实际调度过程中的问题求解思路。这一篇文章主要面向 flowshop 问题进行数学建模,对于这类比较经典的问题&#xf…

大语言模型基础

大语言基础 GPT : Improving Language Understanding by Generative Pre-Training 提出背景 从原始文本中有效学习的能力对于减轻自然语言处理中对监督学习的依赖至关重要。很多深度学习方法需要大量人工标注的数据,限制了它们在很多领域的应用,收集更…

【鸿蒙学习笔记】MVVM模式

官方文档:MVVM模式 [Q&A] 什么是MVVM ArkUI采取MVVM Model View ViewModel模式。 Model层:存储数据和相关逻辑的模型。View层:在ArkUI中通常是Component装饰组件渲染的UI。ViewModel层:在ArkUI中,ViewModel是…

【Java】垃圾回收学习笔记(二):分代假说与垃圾回收算法

文章目录 0. 分代收集理论分代假说分代GC定义 1. 垃圾回收算法1.1 标记清除(Mark-Sweep)算法优点缺点 1.2 标记复制算法优点缺点为什么是8:1:1? 1.3 标记整理算法优点缺点 2. 是否移动? 0. 分代收集理论 分代假说 现在多数JVM G…

子数组按位与为k

注意这里的子数组是连续的非空的数组&#xff0c;我们要学会与处理就是求交集 class Solution { public:long long countSubarrays(vector<int>& nums, int k) {long long ans 0;for (int i 0; i < nums.size(); i) {int x nums[i];for (int j i - 1; j > …

MATLAB 2024b 更新了些什么?

MATLAB 2024b版本已经推出了预览版&#xff0c;本期介绍一些MATLAB部分的主要的更新内容。 帮助浏览器被移除 在此前的版本&#xff0c;当我们从MATLAB中访问帮助文档时&#xff0c;默认会通过MATLAB的帮助浏览器&#xff08;Help browser&#xff09;。 2024b版本开始&…

【Linux】压缩命令——gzip,bzip2,xz

1.压缩文件的用途与技术 你是否有过文件太大&#xff0c;导致无法以正常的E-mail方式发送&#xff1f;又或学校、厂商要求使用CD或DVD来做数据归档之用&#xff0c;但是你的单一文件却都比这些传统的一次性存储媒介还要大&#xff0c;那怎么分成多块来刻录&#xff1f;还有&am…

[搭建个人网站] 云服务器 or 本地环境搭建

别人没有的&#xff0c;你有&#xff0c;你就牛。 面试&#xff0c;吹牛皮的时候 都可以拉出来溜溜 本文介绍2种搭建网站模式方式&#xff1a;区别嘛&#xff08;花钱跟不花钱&#xff09; 花钱&#xff1a; 1. 先购买个域名。。&#xff08;这里就不多介绍了&#xff0c;随便…

昇思学习打卡-9-ResNet50图像分类

文章目录 网络介绍数据可视化部分网络实现Building Block结构BottleNet模块 模型训练推理结果可视化学习总结优点不足 网络介绍 在ResNet网络提出之前&#xff0c;传统的卷积神经网络都是将一系列的卷积层和池化层堆叠得到的&#xff0c;但当网络堆叠到一定深度时&#xff0c;…

STM32崩溃问题排查

文章目录 前言1. 问题说明2. STM32&#xff08;Cortex M4内核&#xff09;的寄存器3. 崩溃问题分析3.1 崩溃信息的来源是哪里&#xff1f;3.2 崩溃信息中的每个关键字代表的含义3.3 利用崩溃信息去查找造成崩溃的点3.4 keil5中怎么根据地址找到问题点3.5 keil5上编译时怎么输出…

C++模板元编程(二)——完美转发

完美转发指的是函数模板可以将自己的参数“完美”地转发给内部调用的其它函数。所谓完美&#xff0c;即不仅能准确地转发参数的值&#xff0c;还能保证被转发参数的左、右值属性不变。 文章目录 场景旧的方法新的方法内部实现参考文献 场景 思考下面的代码&#xff1a; templ…

深度学习之网络构建

目标 选择合适的神经网络 卷积神经网络&#xff08;CNN&#xff09;&#xff1a;我们处理图片、视频一般选择CNN 循环神经网络&#xff08;RNN&#xff09;&#xff1a;我们处理时序数据一般选择RNN 超参数的设置 为什么训练的模型的错误率居高不下 如何调测出最优的超参数 …

【pytorch20】多分类问题

网络结构以及示例 该网络的输出不是一层或两层的&#xff0c;而是一个十层的代表有十分类 新建三个线性层&#xff0c;每个线性层都有w和b的tensor 首先输入维度是784&#xff0c;第一个维度是ch_out,第二个维度才是ch_in(由于后面要转置)&#xff0c;没有经过softmax函数和…

C++ 引用——引用的本质

本质&#xff1a;引用的本质在c内部实现是一个指针常量 C推荐用引用技术&#xff0c;因为语法方便&#xff0c;引用本质是指针常量&#xff0c;但是所有的指针操作编译器都帮我们做了 示例&#xff1a; 运行结果&#xff1a;

C++初学者指南-4.诊断---valgrind

C初学者指南-4.诊断—Valgrind Valgrind&#xff08;内存错误检测工具&#xff09; 检测常见运行时错误 读/写释放的内存或不正确的堆栈区域使用未初始化的值不正确的内存释放&#xff0c;如双重释放滥用内存分配函数内存泄漏–非故意的内存消耗通常与程序逻辑缺陷有关&#xf…

水箱高低水位浮球液位开关工作原理

工作原理 水箱高低水位浮球液位开关是一种利用浮球随液位升降来实现液位控制的设备。其基本原理是浮球在液体的浮力作用下上下浮动&#xff0c;通过磁性作用驱动与之相连的磁簧开关的开合&#xff0c;从而实现液位的高低控制和报警。当液位升高时&#xff0c;浮球上浮&#xf…