【matlab】状态空间模型与传递函数模型的建立与转换

目录

SISO系统

MIMO系统

状态空间模型

状态空间模型到传递函数模型的转换

传递函数模型到状态空间模型的转换

(1) 转换函数ss()

(2) 规范形转换函数canon()

(3) 常微分方程(传递函数)转换为状态空间模型函数dif2ss()  

状态空间模型的变换

 特征值、特征向量与广义特征向量的计算

线性定常系统可以是连续系统,也可以是离散系统线

SISO系统

线性定常连续系统一般以常系数线性常微分方程来描述。对于一个SISO线性定常连续系统,其常微分方程描述为:

对应的经拉氏变换得到的传递函数模型为

在Matlab中,多项式a_0s^n+a_1s^{n-1}...+a_n常用数组表达,如n阶多项式可用n+1个元素的数组表达为[aa1  …  an],其中,数组元素按多项式中“s”的降幂顺序排列,其中的“0”不能省略。因此传递函数的分子与分母多项式可以用2个数组表达

num=[bb1  …  bn]

den=[aa1  …  an]

在Matlab中,传递函数模型变量的数据结构为‘tf’类,可采用函数命令tf()来描述分子和分母多项式的数组组合,建立控制系统的传递函数模型。
tf()函数命令的主要调用格式为
                       sys=tf(num,den)或直接为sys=tf([bb1  …  bn], [aa1  …  an])
经过上述命令,变量sys即表示上述连续系统传递函数模型。类似地,对于SISO线性定常离散系统,其高阶差分方程模型和z域传递函数模型分别为

建立Matlab的离散定常系统传递函数模型可采用函数命令tf(),其建立离散系统传递函数的语句为:
num=[b0  b1  …  bn]den=[a0  a1  …  an]sys=tf(num, den, Ts)
或直接为:
sys=tf([b0  b1  …  bn], [a0  a1  …  an] , Ts)
其中,Ts为采样周期的值。当Ts=-1或者Ts=[]时,则系统的采样周期未定义。经过上述命令,变量sys即表示上述离散系统传递函数模型。
eg:

num_1=[1 2 1];
den_1=[1 5 6];
sys_1=tf(num_1,den_1,-1)

MIMO系统

MIMO线性定常连续系统的传递函数阵G(s)可以表示为

其中,Gij(s)=nij(s)/dij(s)描述了第i个输出与第j个输入之间的动态传递关系,nij(s)和dij(s)分别为其分子与分母多项式.
eg:

num={[1 2 1] [1 5]; [2 3] [6]};den={[1 5 6] [1 2]; [1 6 11 6] [2 7]};sys_1=tf(num,den)

状态空间模型

线性定常连续系统的状态空间模型为

ss()函数的主要调用格式为:
sys=ss(A,B,C,D)
式中,A,B,C,D为已经赋值的适宜维数的数组(矩阵)。
若输入的矩阵维数不匹配,ss()函数将显示出错信息,指出系统矩阵维数不匹配。对线性定常离散系统S(G,H,C,D),则用函数ss()来建立状态空间模型的调用格式为:

sys=ss(G,H,C,D,Ts)

式中,Ts为输入的采样周期,与建立离散系统传递函数的Matlab函数tf()的格式一致。

eg:

A_2=[0 1; -2 -3];
B_2=[0; 1];  C_2=[1 0];  
D_2=0;
sys_2=ss(A_2,B_2,C_2,D_2) 

状态空间模型到传递函数模型的转换

由状态空间模型求解传递函数模型问题的调用格式为:

连续系统: con_tf=tf(con_ss)

离散系统: dis_tf=tf(dis_ss)

传递函数模型到状态空间模型的转换

(1) 转换函数ss()

连续系统: con_ss=ss(con_tf)

离散系统: dis_ss=ss(dis_tf)

(2) 规范形转换函数canon()
Matlab提供的规范形转换函数canon()可以将传递函数模型转换得到状态空间的模态规范形,即对角规范形,其调用格式为:

连续系统: con_ss=canon (con_tf, 'modal')

离散系统: dis_ss=canon (dis_tf, 'modal')

(3) 常微分方程(传递函数)转换为状态空间模型函数dif2ss()  
函数dif2ss()的主要调用格式为:
sys_ss=dif2ss (sys_tf,type)
sys_ss=dif2ss (sys_num, sys_den,type)
eg:
num_1=[2 14 24];  den_1=[1 5 8 4];
sys_1=tf(num_1,den_1);
sys_comp=dif2ss(sys_1,'companion')
sys_jord=dif2ss(num_1,den_1,'jordan') 

状态空间模型的变换

Matlab提供在给定变换矩阵下,计算状态空间模型变换的可直接调用函数ss2ss(),其调用格式为:
sysT = ss2ss(sys,T)
其中,sys和sysT分别为变换前与变换后(输入与输出)的状态空间模型变量;T为给定的变换矩阵。
eg:
A=[0 1 0; 0 0 1; -6 -11 -6];
B=[0; 0; 6];  C=[1 0 0];  D=0;
P=[1 1 1; -1 -2 -3; 1 4 9];
sys_in=ss(A,B,C,D);
sys_out=ss2ss(sys_in,inv(P)) 

 特征值、特征向量与广义特征向量的计算

Matlab提供直接计算特征值和特征向量的函数为eig(),其调用格式为:

d = eig(A)

[V,D] = eig(A)

Matlab的函数eig()不能直接计算广义特征向量,要计算广义特征向量则需要符号计算工具箱的函数jordan(),其调用格式为

J = jordan(A)

[V,J] = jordan(A)

eg:

A=[0 1 0; 0 0 1; -4 -8 -5];
B=[0; 0; 1];  C=[1 0 0];  D=0;
sys_in=ss(A,B,C,D);
[P,J]=jordan(A);
sys_out=ss2ss(sys_in,inv(P)) 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

everything高级搜索-cnblog

everything高级搜索用法 基础4选项验证 总结搜索方式 高级搜索搜指定路径文件名: 文件名 路径不含文件名: !文件名包含单词 路径包含指定内容: 路径 content:内容 大小写 区分大小写搜索搜指定路径文件名: case:文件名 路径全字匹配 全字搜指定路径文件名: wholewo…

力扣刷题--908. 最小差值 I【简单】

题目描述 给你一个整数数组 nums&#xff0c;和一个整数 k 。 在一个操作中&#xff0c;您可以选择 0 < i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] x &#xff0c;其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i &#xff0c;最多 只能 应用 一次…

中霖教育:二级建造师未注册还需要继续教育吗?

关键词&#xff1a;中霖教育怎么样&#xff0c;中霖教育口碑 如果通过了二级建造师考试但是没有注册&#xff0c;还用继续教育吗? 1. 未注册的二级建造师 二级建造师在其证书获取后三年内没有进行注册时&#xff0c;在申请初始注册之前必须完成规定的本专业继续教育课程。 …

ubuntu运行qq音乐闪退

ubuntu运行qq音乐闪退 修改/usr/share/applications中的qqmusic.desktop&#xff0c;在Exec后加上 --no-sandbox,如下图所示&#xff1a; 该文件有可能是只读&#xff0c;权限不够的话用sudo vim qqmusic.desktop

java项目的一些功能(完善登录功能、注册接口参数校验、完善分页查询、完善日期格式、更新文章分类和添加文章分类的分组校验、自定义校验、文件上传 )

目录 完善登录功能 注册接口参数校验 完善分页查询 完善日期格式 更新文章分类和添加文章分类的分组校验 ​编辑 自定义校验 文件上传 完善登录功能 对前端传过来的明文密码进行md5加密处理 password DigestUtils.md5DigestAsHex(password.getBytes()); 这样既可 注…

Python数据分析案例50——基于EEMD-LSTM的石油价格预测

案例背景 很久没更新时间序列预测有关的东西了。 之前写了很多CNN-LSTM&#xff0c;GRU-attention&#xff0c;这种神经网络之内的不同模型的缝合&#xff0c;现在写一个模态分解算法和神经网络的缝合。 虽然eemd-lstm已经在学术界被做烂了&#xff0c;但是还是很多新手小白或…

驾校管理系统的全面革新与升级

智慧驾校系统是一款专为现代驾校量身定制的综合性管理平台,它深度融合了云计算、大数据、物联网及人工智能等前沿技术,旨在为驾校打造一个高效、智能、便捷的运营生态系统。该系统通过数字化、信息化的手段,彻底革新了传统驾校的管理模式,不仅极大地提升了驾校的运营效率,…

Open3D 点云CPD算法配准(粗配准)

目录 一、概述 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 一、概述 在Open3D中&#xff0c;CPD&#xff08;Coherent Point Drift&#xff0c;一致性点漂移&#xff09;算法是一种经典的点云配准方法&#xff0c;适用于无序点云的非…

ECMAScript 6 新特性上篇

一、什么是ECMAScript ECMAScript(简写为ES)是一种基于标准化的脚本语言,用于在Web浏览器中编写交互式和动态的网页。它是由Ecma国际组织(以前称为欧洲计算机制造商协会)定义和标准化的。ECMAScript定义了语法、类型、控制结构、内置对象等方面的规范,使得不同的浏览器和…

【漏洞复现】宏景eHR LoadOtherTreeServlet SQL注入漏洞

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合&#xff0c;满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR LoadOtherTreeServlet接口处存在SQL注入漏洞&#xff0c;未经身份验证的远程攻击者除了可以利用 SQL 注入漏…

C++期末综合练习

id:159 A. 音像制品&#xff08;类与对象&#xff09; 题目描述 某商店出租音像制品&#xff0c;制品信息包括&#xff1a;类型、名称、租金单价、状态。 其中类型用单个数字表示&#xff0c;对应关系为&#xff1a;1-黑胶片&#xff0c;2-CD&#xff0c;3-VCD&#xff0c;4-…

孩子很内向,是不是自闭症?

作为星启帆寄宿制自闭症学校的老师&#xff0c;我深知内向与自闭症之间存在着本质的区别&#xff0c;尽管两者在社交表现上可能有一定的相似性。 首先&#xff0c;内向是一种性格特质&#xff0c;表现为个体在社交场合中相对安静、羞涩&#xff0c;更喜欢独处或与小范围的人交往…

Webpack: Loader开发 (1)

概述 如何扩展 Webpack&#xff1f;有两种主流方式&#xff0c;一是 Loader —— 主要负责将资源内容翻译成 Webpack 能够理解、处理的 JavaScript 代码&#xff1b;二是 Plugin —— 深度介入 Webpack 构建过程&#xff0c;重塑 构建逻辑。 相对而言&#xff0c;Loader 的职责…

Zookeeper分布式锁原理说明【简单易理解】

Zookeeper 非公平锁/公平锁/共享锁 。 1.zookeeper分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下&#xff0c;性能会下降的比较厉害&#xff0c;主要原因是&#xff0c;所有的连接都在对同一个节点进行监听&#xff0c;当服务器检测到删除事件时&#xff0c;要通知…

人脸识别课堂签到系统【PyQt5实现】

人脸识别签到系统 1、运用场景 课堂签到,上班打卡,进出门身份验证。 2、功能类别 人脸录入,打卡签到,声音提醒,打卡信息导出,打包成exe可执行文件 3、技术栈 python3.8,sqlite3,opencv,face_recognition,PyQt5,csv 4、流程图 1、导入库 2、编写UI界面 3、打…

HackTheBox----Editorial

Editorial 测试过程 1 信息收集 NMAP端口扫描 nmap -sC -sV 10.10.11.20服务器开启了 22、80 端口 80 端口测试 服务器只开启了 22 和 80 端口&#xff0c;先从 80 端口开始进行测试 echo "10.10.11.20 editorial.htb" | sudo tee -a /etc/hostspublish with us…

SwiftData 模型对象的多个实例在 SwiftUI 中不能及时同步的解决

概览 我们已经知道,用 CoreData 在背后默默支持的 SwiftUI 视图在使用 @FetchRequest 来查询托管对象集合时,若查询结果中的托管对象在别处被改变将不会在 FetchedResults 中得到及时的刷新。 那么这一“囧境”在 SwiftData 里是否也会“卷土重来”呢?空说无益,就让我们在…

RK3588编译rkmpp,拉取海康威视网络摄像头264码流并运行yolo

硬件&#xff1a;EVB评估版 SOC&#xff1a;Rockchip RK3588 背景&#xff1a; 由于项目需要&#xff0c;需要拉取264码流&#xff0c;并通过将yolov5s.pt将模型转化为rknn模型&#xff0c;获取模型分析结果。取流可以通过软件解码或者硬件解码&#xff0c;硬件解码速度更快&…

Java版Flink使用指南——安装Flink和使用IntelliJ制作任务包

大纲 安装Flink操作系统安装JDK安装Flink修改配置启动Flink测试 使用IntelliJ制作任务包新建工程Archetype 编写测试代码打包测试 参考资料 在《0基础学习PyFlink》专题中&#xff0c;我们熟悉了Flink的相关知识以及Python编码方案。这个系列我们将使用相对主流的Java语言&…

LabVIEW在自动化测试项目中的推荐架构

在自动化测试项目中&#xff0c;推荐使用LabVIEW的生产者-消费者&#xff08;Producer-Consumer&#xff09;架构。这种架构利用队列实现数据的异步传输和处理&#xff0c;提供了高效、稳定和可扩展的解决方案。其主要优点包括&#xff1a;实现数据采集与处理的解耦、提高系统响…