【MATLAB】根轨迹的绘制及rltool工具的使用

这篇具有很好参考价值的文章主要介绍了【MATLAB】根轨迹的绘制及rltool工具的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、MATLAB中传递函数的表示

在绘制系统的根轨迹之前,需要知道传递函数在matlab中如何表示。
在matlab中,通常用向量表示一个多项式。例如P=[1 2 3 ]表示 F(s)=s2+2s+3。而对于传递函数的表示,通常利用一个向量num表示其分子多项式,den表示分母多项式。例如表示 F ( s ) = 3 s 2 + s s 3 + 5 s + 8 F(s)=\frac{3s^2+s}{s^3+5s+8} F(s)=s3+5s+83s2+s的代码如下:

clear all;
close all;
num=[3 1 0];
den=[1 0 5 8];
sys=tf(num,den)

运行结果:

sys =
 
    3 s^2 + s
  -------------
  s^3 + 5 s + 8
 
Continuous-time transfer function.

如果是两个多项式是相乘的形式,可以利用conv()函数。例如Fs=(s2+3s+1)(4s+1),则可以用den=conv([1 3 1],[4 1])计算出两个多项式相乘后的系数。

二、rlocus函数绘制根轨迹

MATLAB提供rlocus函数可以直接用于绘制系统的根轨迹。还能够允许用户交互式的选取根轨迹上的值。下表是rlocus函数的常见用法。

函数 使用说明
rlocus(G) 绘制开环传递函数为G的根轨迹
rlocus(G1,G2,…) 在同一张图上绘制多个系统的根轨迹
rlocus(G,k) 绘制系统的给定增益向量k的根轨迹
[r,k]=rlocus(G) 返回根轨迹参数,r为闭环特征根
r=rlocus(G,k) 返回系统的开环增益为k时的闭环特征根

下面分别演示常规根轨迹、参数根轨迹和零度根轨迹的绘制步骤。

1.常规根轨迹仿真示例

例: 某系统的结构如下图所示,绘制出其根轨迹。
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
其中: G ( s ) H ( s ) = K ∗ ( s + 5 ) ( s + 2 ) ( s + 3 ) . G(s)H(s) = \frac{K^*(s+5)}{(s+2)(s+3)}. G(s)H(s)=(s+2)(s+3)K(s+5).
求解程序如下:

clear all;
close all;
num=[1 5];%num表示传递函数分子多项式系数向量
den=conv([1 2],[1 3]);%den表示传递函数分母多项式系数向量
sys=tf(num,den);%得到传递函数sys
rlocus(sys)%绘制根轨迹,也可以用rlocus(num,den)直接绘制。

运行结果如下图:
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵

2.参数根轨迹仿真示例

绘制参数根轨迹和绘制常规根轨迹的过程基本上相同。只需要在绘制参数根轨迹之前,引入“等效开环传递函数”,将绘制参数根轨迹的问题化为绘制K*变化时的根轨迹形式来处理。
例: 单位负反馈系统开环传递函数为 G ( s ) = k s ( s + 2 k ) . G(s) = \frac{k}{s(s+2k)}. G(s)=s(s+2k)k.
绘制出k=0→∞时的根轨迹。
解: 首先将上述传递函数转化为:
G ∗ ( s ) = k ( 2 s + 1 ) s 2 . G^*(s) = \frac{k(2s+1)}{s^2}. G(s)=s2k(2s+1).
然后就按照常规根轨迹的绘制步骤进行绘制,代码如下:

clear all;
close all;
num=[2 1];
den=[1 0 0];
rlocus(num,den);

运行结果如下:
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵

3.零度根轨迹仿真示例

绘制零度根轨迹和绘制常规根轨迹的过程也基本上相同。唯一的差别是在绘制零度根轨迹时,需要在表示传递函数分子多项式的系数前添加一个负号,举个例子如下。
例: 某正反馈系统的结构图如下所示,
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
其中: G ( s ) H ( s ) = K ∗ s ( s + 5 ) ( s + 8 ) ( s 2 + 2 s + 2 ) . G(s)H(s) = \frac{K^*s(s+5)}{(s+8)(s^2+2s+2)}. G(s)H(s)=(s+8)(s2+2s+2)Ks(s+5).
试绘制出根轨迹。
代码如下:

clear all;
close all;
num=[-1 -5 0];
den=conv([1 8],[1 2 2]);
Gs=tf(num,den);
rlocus(Gs)

运行结果如下:
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵

三、图形化工具rltool介绍

MATLAB的rltool工具是一个图形化的工具,能够显示出系统的根轨迹以及系统的响应,同时也能够绘制系统的Bode图、奈奎斯特图和Nichols图等。rltool工具提供了一个非常直观的界面,帮助用户设计、分析和仿真控制系统,使得控制器的设计变得更加简单和高效。
下图是rltool工具界面的介绍。
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
rltool工具默认的系统结构如下图所示,
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
其中G为被控对象,也就是输入rltool(sys)命令时传递函数sys,C为控制器(补偿器),在本文中C的值就是开环增益K的值。如果要改变系统的结构图,在菜单栏的第三项“Edit Architecture”中选择系统结构。
rltool常用命令如下表:

函数 说明
rltool 打开rltool工具
rltool(PLANT) 指定被控对象G的模型,PLANT是用TF、ZPK或SS创建的任何线性模型。
rltool(PLANT,COMP) 进一步指定控制器C的模型,COMP是用TF、ZPK或SS创建的任何线性模型。
rltool(PLANT,COMP,LocationFlag,FeedbackSign) LocationFlag指定控制器的位置,FeedbackSign决定反馈符号。LocationFlag=‘forward’时,控制器C在前向通道上;LocationFlag=‘feedback’时,控制器C在反馈回路上;FeedbackSign='-1’为负反馈;FeedbackSign=’1‘为正反馈。

通过以下的例子来简单介绍rltool工具的使用方法。

例: 某系统的方框图下图所示,
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
已知该系统为单位负反馈系统,被控对象为 G ( s ) = 1 s 3 + 20 s 2 + 100 s G(s)=\frac{1}{s^3+20s^2+100s} G(s)=s3+20s2+100s1,其中C(s)为比例控制器, C ( s ) = K C(s)=K C(s)=K,试绘制出K=0→∞时的系统根轨迹,另外讨论分别加入环节(s+4)和(s+2)对系统根轨迹的影响(C(s)=K(s+4)和C(s)=K(s+2)),并用阶跃响应验证结果。
解:
程序代码如下:

clear all;
close all;
num=[1];
den=[1 20 100 0];
Gs=tf(num,den);%建立被控对象传递函数
rltool(Gs)%打开rltool工具界面

运行以上代码过后,进入到rltool工具的界面,如下图所示。其界面会显示出该系统的根轨迹图和K=1时系统的阶跃响应。根轨迹图中的红点表示当前系统的闭环特征根,可以拖动红点来改变当前系统的闭环特征根,拖动红点的同时系统的阶跃响应也会发生改变。而此时左边"Controllers or Fixed Blocks"状态栏中C的值就是当前系统的开环增益。
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵

然后给系统添加一个环节(s+4),只需要在根轨迹图右击鼠标,选择添加零点极点"Add Pole or Zero"即可,如下如图所示,
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
选择"Real Zero"添加实数零点,再在实数坐标上点击’-4‘的位置,添加完成后如下图所示,可以看到此时C的值为(s+4)。为了下一步能和添加环节(s+2)后对比系统的阶跃响应,先将该系统储存起来,点击菜单栏的"Store"选项储存为Design1。
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
接下来添加环节(s+2),只需要将刚才的“-4”零点拖拽到“-2”处,添加过后的结果如下图所示,

matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵

matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
为了对比两个环节的阶跃响应,首先把两个系统的开环增益都设置为了1(也就是把控制图中C的值设置为1)然后再点击"Compare"选项选择Design1和当前系统进行对比,对比图如下,
matlab根轨迹,matlab,算法,开发语言,自动化,线性代数,矩阵
其中,蓝色曲线为当前系统的阶跃响应(添加了环节(s+2)的系统),绿色曲线为Design1的系统阶跃响应(添加了环节(s+4)的系统)。

rltool的功能远不止画根轨迹,它也可以画Bode图、奈奎斯特图等等,能够对系统时域和频域分析起到很大的帮助,大家可以根据自己需要自行去探索文章来源地址https://www.toymoban.com/news/detail-716753.html

到了这里,关于【MATLAB】根轨迹的绘制及rltool工具的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轨迹规划 | 图解路径跟踪PID算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 PID控制 是一种常用的

    2024年02月07日
    浏览(49)
  • 轨迹规划 | 图解动态窗口算法DWA(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Moti

    2024年02月08日
    浏览(52)
  • 轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 最优控制理论 是一种

    2024年04月09日
    浏览(76)
  • 轨迹规划 | 图解分析人工势场算法APF(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 传统的避障方法通常基

    2024年02月08日
    浏览(41)
  • 优化MATLAB中quiver函数绘制箭头图或矢量图(1)-MATLAB开发

    Matlab的基本数据单位是矩阵,利用Matlab可以较方便得绘制向量分布图,比如空气流的采样数据;函数的梯度;曲面的法线向量等等。Matlab自带的quiver和quiver3函数可以满足这一需求,但是箭头的箭型较为简单,这里主要目的即是进一步绘制更好看的矢量图。 Matlab中自带的quiv

    2023年04月21日
    浏览(77)
  • Matlab数学建模常用算法及论文插图绘制模板资源合集

    最近有很多朋友咨询我关于Matlab论文插图绘制方面的问题。 问了一下,这些朋友中,除了写博士论文的, 大部分都是要参加美赛的 。 这让我突然想起, 自己曾经为了水论文, 购买过一批Matlab数学建模的资料 。 想了想,自己应该也用不到了,索性借此机会,拿出来分享给

    2024年02月16日
    浏览(43)
  • MATLAB | 如何使用MATLAB绘制雷达图(蜘蛛图)

    数据为数值矩阵即可: 有 Patch 和 Line 两种样式,通过设置 Type 属性设置样式: 范围改为[2,10],并绘制2,8,9,10四条刻度线: 使用: setThetaTick setRTick 设置轴属性,举个例子,theta轴变为淡红色,R轴变为淡蓝色: 使用: setPropLabel setRLabel 修改属性标签和R刻度标签: 使用 setBkg 函数修饰

    2024年02月12日
    浏览(38)
  • 基于MATLAB的最小二乘法拟合与拟合工具箱使用教程(附完整代码与算法)

    给定一组数据满足某一函数模型,其中a为待定系数向量。 那么,最小二乘曲线拟合的目标就是:求出一组待定系数的值,使得以下表达式子最小: 在MATLAB中格式如下: 由以下MATLAB代码生成一组数据: 该组数据满足y(x),求出待定系数,使得目标函数的值为最小。 解: MATL

    2024年01月17日
    浏览(52)
  • MATLAB轻松绘制地图路线——Dijkstra(迪杰斯特拉)算法最短路径规划

    利用MATLAB绘制地图需要三个基本数据: 节点 节点坐标 节点间相通的路线 以11B交通巡警平台调度问题中的A区数据为例: (数据及工程文件下载链接见文末) Demo1: 可通过已知节点的坐标,计算出各节点之间的距离,有Matlab基础的同学可以尝试Demo2, 也可通过Excel自行实现;

    2023年04月21日
    浏览(46)
  • MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)

    好久不见哈,今天带来一个不咋炫酷但是比较实用的甘特图绘制,就画一堆矩形嘛非常简单。 之所以这期工具函数放在最前面是因为比较短哈: 基本使用 设置任务开始时间,结束时间及任务编号后,调用工具函数绘图即可: 不咋好看的圆角 设置 Curvature 为0-1之间的数值即可

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包