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

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、时间响应
  • 二、频率响应
  • 三、极点/零点图和根节点
  • 四、响应特性
  • 五、分析 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 对象,则会在频率值之间插值绘制响应。

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


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

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

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

相关文章

直播电商大变局:店播时代终于来了!

店播时代终于来了。 直播在2023年双十一的亮点,也是焦点。今年双十一,舆论场的注意力都集中在了几大平台的头部主播身上,却少有人注意店播的表现——根据淘宝直播官方数据,10月31日淘宝直播上有29个直播间开局即破亿,…

【MATLAB源码-第67期】基于麻雀搜索算法(SSA)的无人机三维地图路径规划,输出最短路径和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 ​麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新颖的元启发式优化算法,它受到麻雀社会行为的启发。这种算法通过模拟麻雀的食物搜索行为和逃避天敌的策略来解决优化问题。SSA通过模…

Anaconda安装与配置

1.打开Anaconda官网,选择对应版本,下载到对应目录即可 或者进入: Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2.双击打开.exe文件,然后点击next ; 3.点击agree 4.点击just me,然后next; 5.在Choose Install L…

Linux 安装node并全局可用

前言 基于:操作系统 CentOS 7.6 工具:Xshell7、Xftp7 1.下载 根目录创建一个 node 文件夹并进入 mkdir /node && cd /node下载压缩包 wget https://nodejs.org/download/release/v16.18.0/node-v16.18.0-linux-x64.tar.gz2.解压并重命名 …

oracle 重启步骤及踩坑经验

oracle 重启步骤及踩坑经验 标准重启步骤 切换到oracle用户 su - oracle关闭监听 lsnrctl stop杀掉oracle有关进程 ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {print $2}|xargs kill -9#查询pid ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {p…

第 5 章 主窗口及对话框

5.1 主窗口区域划分 QMainWindow是Qt框架带来的一个预定义的主窗口类。所谓主窗口,就是一个普通意义上的应用程序最顶层的窗口。例如对于浏览器而言,主窗口就是这个浏览器窗口。回想一下,经典的主窗口通常由一个标题栏、一个菜单栏、若干工具…

【Linux】常见的Linux命令

目录 一、与目录有关的操作 二、与文件有关的操作 三、针对目录的操作 三、在linux上搭建环境 一、与目录有关的操作 1.ls 显示目录内容列表 ls / 这里的 / 表示根目录,相当于windows中的此电脑,linux中没有盘符。 ls -l / 显示详细信息 可以…

基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

效果: 功能点: 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的: 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖…

postgresql 触发器如何生成递增序列号,从1开始,并且每天重置

大家好,我是三叔,许久不见,这期给大家介绍一下笔者在开发中遇到的业务处理:pgsql 创建触发器生成每日递增序列,并且第二天重置,根据不同的用户进行不同的控制。 1.创建生成递增序列的 table 表 -- 创建us…

线程池与工厂模式

目录 ♫什么是线程池 ♫线程池的优点 ♫工厂模式 ♫工厂模式的意义 ♫线程池的使用 ♫线程池常见的创建方法 ♫ThreadPoolExecutor ♫实现一个线程池 ♫什么是线程池 线程池是一种管理和复用线程的技术,它在应用程序启动时预先创建一组线程,并将它…

uniapp写一个计算器用于记账(微信小程序,APP)

提要:自己用uniapp写了一个记账小程序(目前是小程序),写到计算器部分,在网上找了别人写的计算器,大多数逻辑都是最简单的,都不能满足一个记账计算器的基本逻辑。与其在网上找来找去,…

由CAB/PAB展开的一些思考

又到了一月保底一篇订阅号文章的时候,上周受到Oracle邀请,参加了在上海Oracle办公室举行的CAB(The 13th Oracle China Customer Advisory Board Metting)/ PAB(The 3th Oracle China Partner Advisory Board Metting&…

信息论基础知识1

1.1 自信息定义:把某个消息出现的不确定性大小,用这个消息出现的概率的对数表示: I(X)-logp(x) 1.2 在任何一个信息流通的系统中,都有一个发出信息的发送端(信源),有一个接收信息的接收端…

cmake find_package、引用GDAL 初步学习

上次的源码的CMakeLists.txt文件里有 find_package(GDAL REQUIRED) 这句; 从字面意思看此源码需要GDAL库; 查了一下,find_package 指令的基本功能是查找第三方库,并返回其细节; 我当前GDAL安装在D:\GDAL; 先把它的CMakeLists.txt重命名为别的,不使用; 新建一个C…

多线程基础

1. 线程创建的几种方式 2. 锁的类型 在学习JUC之前,加锁、等待、唤醒 分别使用的是 (synchronized、lock)、wait、notify在学习JUC开始,学会使用lock接口的其他实现类来进行上述操作,比如 ReentrantLock 3. 线程池 …

哪里能找到可以学习的前端实战项目?

前言 下面是我整理的一些关于GitHub上的前端相关的项目,希望对你有所帮助,整理不易,可以的话不要吝啬你的点赞喜欢收藏哈~ 废话少说,我们直接进入正题——> 实用工具向 1.Echarts Star:55.6k Echarts提供了大量…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测…

Spring、SpringMVC、Mybatis

一.Spring基础 1.Spring 框架是什么 Spring 是一款开源的轻量级 Java 开发框架,我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,例如,Spring core、Spring JDBC、Spring MVC 等,使用这些模块可…

python 数据挖掘库orange3 介绍

orange3 是一个非常适合初学者的data mining library. 它让使用者通过拖拽内置的组件来形成工作流。让你不需要写任何代码就可以体验到数据挖掘和可视化的魅力。 它的桌面如下,这里我创建了 3 个节点,分别是数据集、小提琴图,散点图 其中 …

误删的文件恢复了成乱码 误删的文件恢复了成乱码怎么调整

电脑系统:Windows11 电脑型号:惠普 软件版本:EasyRcovery14 关于电脑,我们可以说是非常熟悉,并熟练掌握了对电脑的最基本操作,比如复制、粘贴、新建、删除文件。但我们真的很懂它吗?比如误删…