MATLAB中ss2tf函数用法

目录

语法

说明

示例

质点-弹簧系统

双体振荡器


        ss2tf函数的功能是将状态空间表示形式转换为传递函数。

语法

[b,a] = ss2tf(A,B,C,D)
[b,a] = ss2tf(A,B,C,D,ni)

说明

        [b,a] = ss2tf(A,B,C,D) 将方程组的状态空间表示形式转换为等同的传递函数。ss2tf 返回连续时间方程组的拉普拉斯变换传递函数和离散时间方程组的 Z 变换传递函数。

        [b,a] = ss2tf(A,B,C,D,ni) 返回当具有多个输入的方程组的第 ni 个输入受单位冲激影响时所生成的传递函数。

示例

质点-弹簧系统

        一维离散时间震荡系统由单位质点 m 通过一根单位弹性常量弹簧连接到墙壁构成。传感器以 Fs=5 Hz 对质量的加速度 a 取样。

        生成 50 个时间样本。定义采样间隔 Δt=1/Fs。

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);

        振荡器可以通过状态空间方程描述。

        其中 是状态向量,r 和 v 分别是质点的位置和速度,而矩阵

A = [cos(dt) sin(dt);-sin(dt) cos(dt)];
B = [1-cos(dt);sin(dt)];
C = [-1 0];
D = 1;

        系统使用正方向的单位冲激进行刺激。使用该状态空间模型计算系统从全零的初始状态开始的时间演进。

u = [1 zeros(1,N-1)];x = [0;0];
for k = 1:Ny(k) = C*x + D*u(k);x = A*x + B*u(k);
end

以时间函数形式绘制质量的加速度。

stem(t,y,'filled')
xlabel('t')

如图所示:

        使用传递函数 H(z) 过滤输入以计算时间依赖加速度。绘制结果。

[b,a] = ss2tf(A,B,C,D);
yt = filter(b,a,u);stem(t,yt,'filled')
xlabel('t')

如图所示:

        系统的传递函数包含一个解析式:

使用表达式过滤输入。绘制响应。

bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);stem(t,yf,'filled')
xlabel('t')

如图所示:

        所有这三种情况下的结果都相同。

双体振荡器

        理想的一维振荡系统由位于两面墙壁间的两个单位质点 m1 和 m2 组成。每个质点通过一根单位弹性常量弹簧连接到最近的墙壁。另外一根弹簧连接这两个质点。传感器以 Fs=16 Hz 的频率对 a1 和 a2(质点的加速度)采样。

        将总测量时间指定为 16 秒。定义采样间隔 Δt=1/Fs。

Fs = 16;
dt = 1/Fs;
N = 257;
t = dt*(0:N-1);

        系统可以由状态空间模型描述

        其中 是状态向量,ri 和 vi 分别是第 i 个质点的位置和速度。输入向量 ,输出向量 。状态空间矩阵为

连续时间状态空间矩阵为

I 表示合适大小的单位矩阵。

Ac = [0 1 0 0; -2 0 1 0; 0 0 0 1; 1 0 -2 0];
A = expm(Ac*dt);
Bc = [0 0; 1 0; 0 0; 0 1];
B = Ac\(A-eye(4))*Bc;
C = [-2 0 1 0; 1 0 -2 0];
D = eye(2);

        第一个质点 m1 接收正向的单位冲激。

ux = [1 zeros(1,N-1)];
u0 = zeros(1,N);
u = [ux;u0];

        使用该模型计算系统从全零的初始状态开始的时间演进。

x = [0 0 0 0]';
y = zeros(2,N);for k = 1:Ny(:,k) = C*x + D*u(:,k);x = A*x + B*u(:,k);
end

        以时间函数形式绘制两个质点的加速度。

stem(t,y','.')
xlabel('t')
legend('a_1','a_2')
title('Mass 1 Excited')
grid

如图所示:

        将系统转换为其传递函数表示形式。求得对第一个质点的正单位冲激刺激的系统响应。

[b1,a1] = ss2tf(A,B,C,D,1);
y1u1 = filter(b1(1,:),a1,ux);
y1u2 = filter(b1(2,:),a1,ux);

        绘制结果。传递函数提供与状态空间模型相同的响应。

stem(t,[y1u1;y1u2]','.')
xlabel('t')
legend('a_1','a_2')
title('Mass 1 Excited')
grid

如图所示:

        系统将重置为其初始配置。现在,其他质点 m2 接收正向单位冲激。计算该系统的时间演进。

u = [u0;ux];x = [0;0;0;0];
for k = 1:Ny(:,k) = C*x + D*u(:,k);x = A*x + B*u(:,k);
end

        绘制加速度。将交换各个质点的响应。

stem(t,y','.')
xlabel('t')
legend('a_1','a_2')
title('Mass 2 Excited')
grid

如图所示:

        求得对第二个质点的正单位冲激刺激的系统响应。

[b2,a2] = ss2tf(A,B,C,D,2);
y2u1 = filter(b2(1,:),a2,ux);
y2u2 = filter(b2(2,:),a2,ux);

        绘制结果。传递函数提供与状态空间模型相同的响应。

stem(t,[y2u1;y2u2]','.')
xlabel('t')
legend('a_1','a_2')
title('Mass 2 Excited')
grid

如图所示:

参数说明

A — 状态矩阵

        状态矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则 A 为 n×n。

B — 输入-状态矩阵

        输入-状态矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则B为 n×p。

C — 状态-输出矩阵

        状态-输出矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则C为 q×n。

D — 馈通矩阵

        馈通矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则D为 q×p。

ni — 输入索引

        输入索引,指定为一个整数标量。如果方程组具有 p 个输入,请使用带尾部参数 ni = 1, …, p 的 ss2tf 计算对应用于第 ni 个输入的单位冲激的响应。

b — 传递函数分子系数

        传递函数分子系数,以向量或矩阵的形式返回。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则对于每个输入,b 为 q×(n + 1)。系数按 s 或 z 的幂的降序返回。

a — 传递函数分母系数

        传递函数分母系数,以向量的形式返回。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则对于每个输入,a 为 1×(n + 1)。系数按 s 或 z 的幂的降序返回。

传递函数

  • 对于离散时间系统,状态空间矩阵通过

        与状态向量 x、输入 u 和输出 y 相关。

        传递函数是方程组的冲激响应的 Z 变换。可以按状态空间矩阵表示形式将其表示为

  • 对于连续时间方程组,状态空间矩阵通过

    与状态向量 x、输入 u 和输出 y 相关。

    传递函数是方程组的冲激响应的拉普拉斯变换。可以按状态空间矩阵表示形式将其表示为

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

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

相关文章

3、Flowable任务分配和流程变量

任务分配和流程变量 1.任务分配 1.1 固定分配 固定分配就是我们前面介绍的,在绘制流程图或者直接在流程文件中通过Assignee来指定的方式 1.2 表达式分配 Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language,是EE6规范的一部分.Flo…

未雨绸缪,前端小知识

目录 一、输入法输入时实时调用方法实现搜索 二、使用position: relative;会脱离标准流吗 三、dataV库初步了解 四、大屏常用库vue3-danmaku(滚动弹幕) 五、全屏发现页面底部出现大面积留白 六、elementUI的多选框选择其中一个直接导致全部选中 ​…

重生奇迹mu宠物带来不一样的体验

重生奇迹mu宠物有什么作用? 全新版本中更是推出了各种宠物,在玩游戏时还可以带着宠物,一起疯狂的刷怪等等,可以为玩家带来非常不错的游戏体验,那么下面就来给大家说说各种宠物适合做什么事情。 1、强化恶魔适合刷怪 …

iPhone 12电池寿命结果:四款机型都进行了比较

如果你想决定买哪款iPhone 12,电池寿命应该在你的清单上名列前茅。我们已经通过电池测试运行了所有新款iPhone 12,结果喜忧参半。 iPhone 12 mini是其中最小的一款,有一块小电池可供匹配,在5G上运行时间最短。iPhone 12和iPhone …

Linux性能优化--性能追踪3:系统级迟缓(prelink)

12.0 概述 本章包含的例子说明了如何用Linux性能工具寻找并修复影响整个系统而不是某个应用程序的性能问题。阅读本章后,你将能够: 追踪是哪一个进程导致了系统速度的降低。用strace调查一个不受CPU限制的进程的性能表现。用strace调查一个应用程序是如…

c 语言基础:L1-044 稳赢

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个…

电容笔好还是触屏笔好?便宜又好用的电容笔推荐

目前有哪些电容笔值得买?相比于之前的电容笔,现在的电容笔增加了很多新的特性功能,例如防误触、避免手指不小心触碰屏幕造成书写错误、笔画粗细可以自由调整等。苹果最初的Pencil现在售价一直高居不下。所以,如果你没有过多的预算…

【ArcGIS Pro二次开发】(71):添加图层名称和路径到字段

如题,这个工具的目的就是将图层的名称和路径添加到字段值中。 有时候图层的名称和路径也是重要的信息,需要参与到字段的计算或是分析中,但是Arcgis Pro中没有一个方便的方法可以将其写入字段值,因此,就做了这么一个小…

2023_Spark_实验十五:自定义法创建Dataframe及SQL操作

方式二:SQL方式操作 1.实例化SparkContext和SparkSession对象 2.创建case class Emp样例类,用于定义数据的结构信息 3.通过SparkContext对象读取文件,生成RDD[String] 4.将RDD[String]转换成RDD[Emp] 5.引入spark隐式转换函数&#xff08…

探索Java NIO:究竟在哪些领域能大显身手?揭秘原理、应用场景与官方示例代码

一、NIO简介 Java NIO(New IO)是Java SE 1.4引入的一个新的IO API,它提供了比传统IO更高效、更灵活的IO操作。与传统IO相比,Java NIO的优势在于它支持非阻塞IO和选择器(Selector)等特性,能够更…

Windows运维相关经验技巧

常用工具 在线PS Photoshop在线 FAQ 电脑能上网,浏览器上不了网 # 错误原因: 设置了网络代理,浏览器无法通过网络代理上网# 解决办法 关闭网络代理 (1)wini,打开设置 (2)网络和I…

LabVIEW建立生产者消费者

LabVIEW建立生产者消费者 生产者/消费者设计模式由并行循环组成,这些循环分为两类:生产者循环和消费者循环。生产者循环和消费者循环间的通信可以使用队列或通道连线来实现。 队列 LabVIEW内置的队列操作VI可在函数选板>>数据通信>>队列操…