MATLAB 绘制 SISO 和 MIMO 线性系统的时间和频率响应图

news2024/11/28 10:43:50

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、时间响应
  • 二、频率响应
  • 三、极点/零点图和根节点
  • 四、响应特性
  • 五、分析 MIMO 系统
  • 六、系统比较
  • 七、修改时间轴或频率轴数值
  • `如果觉得内容不错,请点赞、收藏、关注`


前言

本例演示如何绘制 SISO 和 MIMO 线性系统的时间和频率响应图。


一、时间响应

创建线性系统。在本例中,创建一个三阶传递函数。

sys = tf([8 18 32],[1 6 14 24])
sys =
 
     8 s^2 + 18 s + 32
  -----------------------
  s^3 + 6 s^2 + 14 s + 24
 
连续时间传递函数。
模型属性

您可以使用 step and impulse 命令绘制该系统的阶跃和脉冲响应。

subplot(2,1,1)
step(sys)
subplot(2,1,2)
impulse(sys)

在这里插入图片描述

您还可以使用 lsim 命令模拟对正弦波等任意信号的响应。输入信号显示为灰色,系统响应显示为蓝色。

clf
t = 0:0.01:4;
u = sin(10*t);
lsim(sys,u,t)   % u,t define the input signal

在这里插入图片描述

您可以在连续或离散的 tfsszpk 模型中使用绘图命令。对于状态空间模型,您还可以绘制从给定初始状态开始的非强迫响应。例如

A = [-0.8 3.6 -2.1;-3 -1.2 4.8;3 -4.3 -1.1];
B = [0; -1.1; -0.2];
C = [1.2 0 0.6];
D = -0.6;
G = ss(A,B,C,D);
x0 = [-1;0;2];  % initial state
initial(G,x0)
grid

在这里插入图片描述

二、频率响应

频域分析是了解控制系统稳定性和性能特性的关键。Bode 图、Nyquist 图和 Nichols 图是绘制和分析线性系统频率响应的三种标准方法。您可以使用 BodeNicholsNyquist 命令创建这些图。

创建线性系统。

sys = tf([8 18 32],[1 6 14 24])
sys =
 
     8 s^2 + 18 s + 32
  -----------------------
  s^3 + 6 s^2 + 14 s + 24
 
连续时间传递函数。
模型属性

为该系统绘制 Bode 图。

bode(sys)
grid

在这里插入图片描述

为该系统绘制奈奎斯特图。

nyquist(sys)
grid

在这里插入图片描述

为该系统创建一个尼科尔斯图表。

nichols(sys)
grid

在这里插入图片描述

三、极点/零点图和根节点

系统的极点和零点包含有关其动态、稳定性和性能极限的宝贵信息。例如,考虑以下 SISO 控制回路中的反馈回路。

在这里插入图片描述
G = − ( 2 s + 1 ) s 2 + 3 s + 2 G=\frac{-(2s+1)}{s^{2}+3s+2} G=s2+3s+2(2s+1)

对于增益值 k = 0.7,可以使用 pzmap 绘制闭环极点和零点图。

s = tf('s');
G = -(2*s+1)/(s^2+3*s+2);
k = 0.7;
T = feedback(G*k,1);
pzmap(T)
grid, axis([-2 0 -1 1])

在这里插入图片描述

闭环极点(蓝色 x 标记)位于左半平面内,因此在选择增益 k 时,反馈回路是稳定的。这里的阻尼比约为 0.7,表明闭环响应阻尼良好,这一点可以通过以下数据得到证实:

clf
step(T)

在这里插入图片描述

为了进一步了解环路增益 k 对闭环稳定性的影响,可以绘制闭环极点位置与 k 的函数关系图。

rlocus(G)
grid

在这里插入图片描述

点击定位点与 y 轴相交的位置,可以发现当 k = 1.51 时,闭环极点变得不稳定。因此,为保证闭环稳定,环路增益应保持小于 1.5。

四、响应特性

右键单击响应图可以访问各种选项和注释。特别是,通过特性菜单可以显示标准指标,如阶跃响应的上升时间和稳定时间,或频率响应图的峰值增益和稳定裕度。

使用上一节的示例,绘制闭环阶跃响应图:

step(T)

在这里插入图片描述

现在,右键单击曲线图以显示峰值响应和稳定时间特性,并单击蓝点读取相应的过冲和稳定时间值:

在这里插入图片描述

五、分析 MIMO 系统

目前提到的所有命令都完全支持多输入多输出(MIMO)系统。在多输入多输出情况下,这些命令会生成数组图。例如,请看下面的两输入两输出系统。

sys = rss(3,2,2);
sys.A = [-0.5 -0.3 -0.2 ; 0 -1.3  -1.7; 0.4 1.7 -1.3];

阶跃响应是一个 2×2 的图阵列,每列显示一个特定输入通道的阶跃响应。

step(sys)

在这里插入图片描述

您可以右键单击曲线图并选择 I/O 分组 -> 全部子菜单,将所有四个响应组合到一个曲线图上。

在这里插入图片描述

以下附加图有助于分析多输入多输出系统:

  • 奇异值图 (sigma),显示频率响应的主要增益

  • 每个 I/O 对的极点/零点图(iopzplot)

例如,绘制 sys 的峰值增益与频率的函数关系图:

sigma(sys)
grid

在这里插入图片描述

六、系统比较

您可以使用任何响应绘图命令同时绘制多个系统。您可以为每个系统指定特定的颜色、标记或线条样式,以便于比较。以上述反馈为例,用三种不同颜色绘制环路增益 k 的三个值的闭环阶跃响应:

k1 = 0.4;
T1 = feedback(G*k1,1);
k2 = 1;
T2 = feedback(G*k2,1);
step(T,'b',T1,'r',T2,'g')
legend('k = 0.7','k = 0.4','k = 1')

在这里插入图片描述

七、修改时间轴或频率轴数值

您可以修改现有线性分析图的时间和频率向量。

对于阶跃图和脉冲图,可以通过右键单击绘图区域并选择指定时间来指定时间矢量。

在这里插入图片描述

在 "指定时间 "对话框中,您可以使用以下方法之一定义时间值和单位。

  • 自动生成 - 根据系统动态自动生成时间矢量。稀疏系统不支持此选项。

  • 定义停止时间 - 指定停止时间,创建从时间 0 开始的时间矢量。

  • 定义矢量 - 将时间指定为单调递增、间距均匀的时间值矢量。

对于波特图、奈奎斯特图、尼克尔斯图和西格玛图,可以通过右键单击绘图区域并选择指定频率来指定频率矢量。

在这里插入图片描述

在 "指定频率 "对话框中,您可以使用以下方法之一定义频率值和单位。

  • 自动生成 - 根据系统动态自动生成频率矢量。稀疏系统不支持此方法。

  • 定义范围 - 指定频率范围。稀疏系统不支持此方法。

  • 定义矢量 - 指定要绘制成矢量的频率。

如果您的系统是 frd 对象,则会在频率值之间插值绘制响应。

更改时间和频率单位将指定输入的单位,但不会更改绘图中的单位。


如果觉得内容不错,请点赞、收藏、关注

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

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

相关文章

YOLOv8改进:检测头结构全新创新篇 | S_improve_Detect结构创新

🚀🚀🚀本文改进:S_improve_Detect 全新的结构头创新,适配各个YOLO 🚀🚀🚀S_improve_Detect 在各个场景都能够有效涨点 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1. S_improve_Detect介

Gradle笔记 一 Gradle的安装与入门

文章目录 Gradle 入门Gradle 简介学习Gradle 的原因: 常见的项目构建工具Gradle 安装Gradle 安装说明安装JDK 下载并解压到指定目录配置环境变量检测是否安装成功 Gradle 项目目录结构Gradle 创建第一个项目Gradle 中的常用指令修改maven 下载源Wrapper 包装器使用教…

CleanMyMac2024破解版如何下载?

CleanMyMac作为一款专业的苹果电脑清理软件,它不仅仅能单纯的卸载不用、少用的应用,同时还支持:1、清理应用程序的数据文件,将应用重置回初始状态,减少空间占用;2、自动检查应用更新,保持应用的…

Android系统Launcher启动流程学习(二)launcher启动

Zygote(孵化器)进程启动 在init进程中有解析.rc文件,在这个rc文件中配置了一个重要的服务service–zygote,这是app程序的鼻祖 zygote进程主要负责创建Java虚拟机,加载系统资源,启动SystemServer进程&#…

C语言switch语句

文章目录 前言一、switch语句二、switch语句中的break三、switch语句中的defaultswitch语句中的case和default的顺序问题: 总结 前言 本文将详细介绍switch语句,break和defualt的用法 一、switch语句 switch语句的表达式: switch (expression){case va…

由于flutter_app依赖于flutter_swiper>=0.0.2,不支持零安全,版本解决失败。

参考 dart3.0使用flutter_swiper报错记录 flutter_swiper package - All Versions从官网的信息可以看到 Dart3版本不兼容 最小兼容的Dart SDK版本需要2.0 Flutter SDK 版本列表Flutter SDK 版本列表 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 说明:因…

从物理磁盘到数据库 —— 存储IO链路访问图

原图来自:数据库IO链路访问图 – OracleBlog 由于很复杂,为了加深理解自己重新画了一次,另外参考其他文档补充了各部分的插图和介绍。 一、 存储服务器 1. 物理磁盘 外层的壳子称为硬盘笼 cage 2. chunklet Chunklet 是一个虚拟概念而不是实…

分布式锁在Redis集群中的实践与探讨

分布式锁的基本概念 分布式锁是在分布式计算环境下,用来确保多个进程或线程在访问某些共享资源时能够避免冲突的一种同步机制。其主要目的是为了保持数据的一致性和完整性。为了达到这个目的,分布式锁需要满足互斥性、无死锁和容错性三个基本条件。 互…

SystemC入门之测试平台编写完整示例:全加器

导读: 本文将完整演示基于systemC编写一个全加器的测试平台。具体内容包括:激励平台,监控平台,待测单元的编写,波形文件读取。 1,main函数模块 搭建一个测试平台主要由:Driver, Monitor, DUT(design under …

javaee实验:搭建maven+spring boot开发环境,开发“Hello,Spring Boot”应用

目录 mavenspringboot实验目的实验内容环境的搭建 在开发中,maven和spring都是非常常用、非常重要的管理工具和框架,今天就在这里使用idea进行环境的搭建和创建第一个spring程序 maven 1.1maven是一个跨平台的项目管理工具(主要管理jar包&am…

Dubbo捕获自定义异常

一.问题描述 Dubbo远程服务提供者抛出的自定义异常无法被消费方正常捕获,消费方捕获的自定义异常全部变成RuntimeException,使用起来很不方便。 二.原因分析 相关源码 /** Licensed to the Apache Software Foundation (ASF) under one or more* con…

[自学记录08*]LDR、HDR与ToneMapping

一、Dynamic Range—动态范围 Dynamic Range表示动态范围,检测DR,DR又分为LDR(Low Dynamic Range)和HDR(High Dynamic Range)。它们都是表示亮度值范围的一种方式,那么有什么区别呢。 1.LDR …

系列六、过滤器(二)#案例演示

一、案例演示 说明&#xff1a;如下案例通过springboot的方式演示Filter是如何使用的&#xff0c;以获取Controller中的请求参数为切入点进行演示 1.1、前置准备工作 1.1.1、pom <dependencies><!-- spring-boot --><dependency><groupId>org.spring…

晨控CK-GW08系列网关控制器与CODESYS软件MODBUSTCP通讯手册

晨控CK-GW08系列是一款支持标准工业通讯协议ModbusTCP的网关控制器,方便用户集成到PLC等控制系统中。系统还集成了8路读写接口&#xff0c;用户可通过通信接口使用Modbus TCP协议对8路读写接口所连接的读卡器进行相对独立的读写操作。 晨控CK-GW08系列网关控制器适用于本公司多…

高等数学教材重难点题型总结(十一)曲线积分与曲面积分

同济倒数第二章&#xff0c;论公式复杂程度排名第一&#xff0c;但其实做题难度并不会很高——核心的知识点在于&#xff1a;对弧长的曲线积分、对坐标的曲线积分、对面积的曲面积分、对坐标的曲面积分。想追求尽善尽美的要会使用高斯公式和格林公式&#xff0c;学有余力可以看…

AD9371 官方例程裸机SW 和 HDL配置概述(一)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…

3 函数的升级-上

常量与宏回顾 C中的const常量可以替代常数定义&#xff0c;如: "Const int a 8; --> 等价于 #define a 8 " 宏在预编译阶段处理&#xff0c;而c const常量则在编译阶段处理&#xff0c;比宏 更为安全。 C中&#xff0c;我们可以用宏代码片段去实现某个函数&…

时序分解 | Matlab实现FEEMD快速集合经验模态分解时间序列信号分解

时序分解 | Matlab实现FEEMD快速集合经验模态分解时间序列信号分解 目录 时序分解 | Matlab实现FEEMD快速集合经验模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现FEEMD快速集合经验模态分解时间序列信号分解 算法新颖小众&#xff0c…

企业级SpringBoot单体项目模板 —— 使用 AOP + JWT实现登陆鉴权

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;SpringBoot、企业级、项目模板☀️每日 一言&#xff1a;没学会走就学跑从来都不是问题&#xff0c;要问问自己是不是天才&#xff0c;如果不是&#xff0c;那就要一步步来 文章目录 使用JWT实现…

docker 常用

系统 Ubuntu 20.04 64位 安装文档 ubuntu&#xff1a;https://docs.docker.com/engine/install/ubuntu/ centos&#xff1a;https://docs.docker.com/engine/install/centos/ debian&#xff1a;https://docs.docker.com/engine/install/debian/ 常用命令 查看镜像 docke…