MATLAB rlocus函数根轨迹完整实操教程
2026/7/12 6:26:59 网站建设 项目流程

文章目录

    • 一、rlocus函数核心用途
    • 二、系统建模基础写法
      • 1. 分子分母系数向量写法(实验报告常用)
      • 2. s符号直接建模(复杂系统更简洁)
    • 三、rlocus基础绘图语法
      • 1. 最简调用,自动绘制完整根轨迹
      • 2. 限定增益K范围绘制局部根轨迹
    • 四、高频进阶实操用法
      • 场景1:添加阻尼比、自然频率参考网格 sgrid
      • 场景2:交互式选取增益 rlocfind
      • 场景3:多个系统根轨迹同图对比
      • 场景4:提取根轨迹数据,不绘图
      • 场景5:搭配零极点图辅助分析 pzmap
    • 五、离散系统根轨迹绘制
    • 六、常见报错与实操避坑
    • 七、完整可直接运行综合示例脚本

一、rlocus函数核心用途

rlocus是控制系统工具箱专用函数,用于绘制单位负反馈系统随开环增益K从0到无穷变化时,闭环极点在复平面上的移动轨迹,也就是根轨迹。
通过根轨迹能直观完成三件工程常用工作:

  1. 判断不同增益下系统是否稳定;
  2. 根据阻尼比、超调量要求选定合适开环增益K;
  3. 直观观察零极点对系统动态性能的影响。
    使用前提:提前用tf、zpk、ss搭建LTI线性系统,缺少Control System Toolbox会提示函数未定义。

二、系统建模基础写法

根轨迹只针对开环传递函数建模,两种常用写法。

1. 分子分母系数向量写法(实验报告常用)

示例开环传递函数G ( s ) = 1 s ( s + 3 ) G(s)=\frac{1}{s(s+3)}G(s)=s(s+3)1

num=[1];den=conv([10],[13]);G=tf(num,den);

多阶分母连续相乘,全部用conv函数嵌套展开,避免手动展开多项式出错。

2. s符号直接建模(复杂系统更简洁)

s=tf('s');G=1/(s*(s+3));

三、rlocus基础绘图语法

1. 最简调用,自动绘制完整根轨迹

clear;clc;s=tf('s');G=1/(s*(s+2)*(s+5));figure;rlocus(G);grid on;title('三阶系统开环根轨迹图');xlabel('实轴 σ');ylabel('虚轴 jω');

运行后图像横轴复平面实轴,纵轴虚轴;鼠标左键点击轨迹任意一点,弹窗直接显示:增益K、闭环极点坐标、阻尼比、超调量、无阻尼自然振荡频率。

2. 限定增益K范围绘制局部根轨迹

系统增益区间过大时曲线拥挤,可手动指定K上下限,只绘制关注区间轨迹:

K_range=0:0.01:20;rlocus(G,K_range);grid on;

四、高频进阶实操用法

场景1:添加阻尼比、自然频率参考网格 sgrid

工程设计一般要求阻尼比0.4~0.7,叠加等值线可快速定位满足动态指标的极点:

s=tf('s');G=1/(s*(s+1)*(s+4));rlocus(G);sgrid(0.6,[]);% 仅绘制阻尼比0.6参考线grid on;title('带阻尼比网格的根轨迹');

sgrid(zeta,wn):第一个参数填目标阻尼比,第二个参数填自然频率,留空则只显示阻尼线。

场景2:交互式选取增益 rlocfind

手动点击根轨迹上目标极点,自动返回对应开环增益K,直接生成闭环系统验证阶跃响应:

s=tf('s');G=1/(s*(s+2)*(s+5));rlocus(G);sgrid(0.5,[]);grid on;[K_select,pole]=rlocfind(G);disp(['选中的开环增益 K = ',num2str(K_select)]);% 构建单位负反馈闭环系统G_close=feedback(K_select*G,1);figure;step(G_close);grid on;title(['K=',num2str(K_select),'闭环系统阶跃响应']);

运行代码后鼠标点击目标极点,命令行输出增益,同时弹出闭环阶跃曲线,一步完成增益整定与性能验证。

场景3:多个系统根轨迹同图对比

对比校正前后、增加零点/极点后的轨迹变化,区分线型颜色:

clear;clc;s=tf('s');G1=1/(s*(s+4));G2=(s+1)/(s*(s+4));% 增加零点校正figure;rlocus(G1,'r-',G2,'b--');grid on;legend('原系统','增加零点校正后','Location','best');title('校正前后根轨迹对比');

场景4:提取根轨迹数据,不绘图

需要批量计算不同K对应的极点坐标时,返回增益向量与极点矩阵:

s=tf('s');G=1/(s*(s+3));K_list=0:0.5:10;[r,K_out]=rlocus(G,K_list);% r每一列对应一个K下的全部闭环极点disp('增益与对应闭环极点:');fori=1:length(K_out)disp(['K=',num2str(K_out(i)),' 极点:',num2str(r(:,i))]);end

场景5:搭配零极点图辅助分析 pzmap

绘制根轨迹前先查看开环零极点分布,预判轨迹走向:

s=tf('s');G=1/(s*(s+2)*(s+5));figure;pzmap(G);grid on;title('系统开环零极点分布图(o零点,x极点)');

五、离散系统根轨迹绘制

离散系统传递函数建立时指定采样时间Ts,rlocus用法完全一致:

num=[0.1];den=conv([1-1],[1-0.5]);Ts=0.1;Gz=tf(num,den,Ts);figure;rlocus(Gz);grid on;title('离散系统根轨迹图');

六、常见报错与实操避坑

  1. 未定义函数’rlocus’
    未安装Control System Toolbox,命令行输入ver control校验,附加功能管理器安装工具箱。
  2. 根轨迹只有一小段、缺少分支
    分母多项式未完整展开,多阶因式相乘必须用conv嵌套,不能直接手写合并多项式。
  3. rlocfind点击无响应
    必须先弹出rlocus绘图窗口,再执行rlocfind;代码中分figure分开绘图,避免多图覆盖。
  4. 轨迹越过虚轴不知道临界稳定增益
    鼠标点击轨迹与虚轴交点,弹窗读取对应K值,该值为系统临界稳定增益。
  5. 分不清开环闭环
    rlocus只输入开环传递函数,闭环系统需要用feedback结合选定K重新构造。

七、完整可直接运行综合示例脚本

% rlocus根轨迹完整仿真代码clear;clc;close all;% 1. 构建三阶开环传递函数s=tf('s');G_open=1/(s*(s+1)*(s+5));disp('开环传递函数:');G_open% 2. 绘制带阻尼网格的根轨迹figure(1);rlocus(G_open);sgrid(0.6,[]);grid on;title('三阶系统根轨迹(阻尼比0.6参考线)');% 3. 交互式选取增益,生成闭环验证动态性能[K,p]=rlocfind(G_open);G_close=feedback(K*G_open,1);figure(2);step(G_close);grid on;title(['K=',num2str(K),'闭环系统阶跃响应曲线']);% 4. 提取指定增益区间的极点数据K_data=0:0.2:15;[pole_mat,K_out]=rlocus(G_open,K_data);disp('前5组增益对应闭环极点:');disp([K_out(1:5),pole_mat(:,1:5)']);

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询