楼主: 嘟嘟yoki
324 0

[程序分享] Matlab传递函数的根轨迹曲线的绘制以及如何确定图得出闭环系统稳定的根轨迹系数 5 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2018-5-5
最后登录
2018-5-5

楼主
嘟嘟yoki 发表于 2025-11-25 14:32:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、题目与代码及实验结果

题目展示如下:

对应的程序代码为:

clc ;clear all;close all;
%G1(S)
 num1=[1];
 temp1=[1,0];
 temp2=[1 2 2];
 temp3=[1 6 13];
 temp=conv(temp1,temp2);
 den1=conv(temp,temp3);
 figure;
 rlocus(num1,den1); grid
 title('G1(s)的根轨迹');
  G=tf(num1,den1);
  [k,r]=rlocfind(G);%或者[k,r]=rlocfind(num1,den1);
 %G1(s)的单位负反馈的阶跃响应
 figure
G1_c=feedback(G,1);
step(G1_c);grid
xlabel('t/s');
ylabel('G1_c(t)')
title('G1(s)的单位负反馈的阶跃响应');


%G2(S)
 num1=[1,12];
 temp1=[1,1];
 temp2=[1 12 100];
 temp3=[1 10];
 temp=conv(temp1,temp2);
 den1=conv(temp,temp3);
 figure;
 rlocus(num1,den1); grid
 title('G2(s)的根轨迹');
  G=tf(num1,den1);
 [k,r]=rlocfind(G);%或者[k,r]=rlocfind(num1,den1);
 %G2(s)的单位负反馈的阶跃响应
 figure
G2_c=feedback(G,1);
step(G2_c);grid
xlabel('t/s');
ylabel('G2_c(t)')
title('G2(s)的单位负反馈的阶跃响应');


%G3(S)
 num1=[0.05,1];
 temp1=[1,0];
 temp2=[0.0714 1];
 temp3=[0.012 0.1 1];
 temp=conv(temp1,temp2);
 den1=conv(temp,temp3);
 figure;
 rlocus(num1,den1); grid
 title('G3(s)的根轨迹');
  G=tf(num1,den1);
 [k,r]=rlocfind(G);%或者[k,r]=rlocfind(num1,den1);
 %G3(s)的单位负反馈的阶跃响应
 figure
G3_c=feedback(G,1);
step(G3_c);grid
xlabel('t/s');
ylabel('G3_c(t)')
title('G3(s)的单位负反馈的阶跃响应');

实验运行后得到的结果图像包括:

二、核心函数解析

1. 系统清理与初始化操作

clc; clear all; close all;
  • clc:用于清空 MATLAB 命令窗口,提升界面整洁度。
  • clear all:清除工作空间中的所有变量,防止历史数据对当前计算造成干扰。
  • close all:关闭所有已打开的图形窗口,避免图表重叠显示。

上述命令构成了 MATLAB 脚本常见的起始三部曲,确保每次运行都在一个干净、独立的环境中进行。

2. 传递函数建模方法

tf(num, den)

功能说明:构建线性时不变(LTI)系统的传递函数模型。

调用方式

G = tf(num, den)
num
—— 表示分子多项式系数向量,按 s 的降幂顺序排列。
den
—— 表示分母多项式系数向量,同样按照降幂排列。

实例说明:在定义 G(s) 时,使用了如下语句:

num1 = [1];
den1 = [1 8 25 26 26];
G = tf(num1, den1);

该行代码成功构建了指定形式的传递函数模型。

3. 根轨迹绘图函数详解

rlocus(G)
rlocus(num, den)

功能描述:用于计算并绘制系统根轨迹。根轨迹反映了当开环增益 K 从零逐渐增至无穷大时,闭环系统特征方程根在复平面(s 平面)上的运动路径。

使用格式

rlocus(G)
—— 直接传入传递函数对象 G。
rlocus(num, den)
—— 使用分子和分母系数分别输入。

输出内容:生成一张包含以下元素的根轨迹图:

  • 蓝色“×”标记代表开环极点(Open-loop Poles)。
  • 红色“○”表示开环零点(Open-loop Zeros)。
  • 黑色曲线即为根轨迹本身。

应用示例

rlocus(num1, den1);

此命令将绘制出 G(s) 对应的完整根轨迹图。

4. 反馈系统连接函数

feedback(G, H)

功能说明:实现两个子系统 G 和 H 的反馈连接,默认采用负反馈结构。

语法结构

closed_loop_G = feedback(G, H)
G
—— 前向通道的传递函数。
H
—— 反馈通道的传递函数。

内部计算逻辑:闭环传递函数由公式自动推导得出。

具体例子

G1_c = feedback(G, 1);

其中

H = 1

表明系统采用单位负反馈配置。

5. 阶跃响应仿真工具

step(G)

功能作用:计算并可视化系统在单位阶跃输入信号下的时间响应曲线。

调用方式

step(G)
G
—— 通常为闭环系统的传递函数模型。

输出图形信息

  • 横轴表示时间变量
  • t
  • 纵轴表示系统输出响应值
  • y(t)

实际调用示例

step(G1_c);

该指令会自动仿真并绘制出闭环系统 G_c(s) 的单位阶跃响应曲线。

6. 图形美化相关命令

figure
—— 开启一个新的绘图窗口,便于多图并列展示。
grid
—— 在当前图像中添加网格线,增强数据可读性。
title('文本')
—— 为图表设置标题文字。
xlabel('文本')
—— 给 x 轴添加标注说明。
ylabel('文本')
—— 给 y 轴添加标签说明。

三、程序结构剖析

整体代码设计条理清晰,遵循统一的分析流程,依次对三个不同系统(G, G, G)执行相同的操作序列:

针对每一个系统,均执行以下四个主要步骤:

  1. 建立传递函数模型
    • 设定分子
    • num1
    • 与分母
    • den1
    • 的系数向量。
    • 其中分母通过
    • conv
    • 函数实现多项式相乘,适用于多个因式相乘的情形。
    • 例如:
    • den1 = conv(conv(temp1, temp2), temp3);
    • 等价于展开后的多项式表达式
    • den1 = temp1 * temp2 * temp3
  2. 绘制根轨迹图
    • 利用
    • figure
    • 开启新图形窗口。
    • 调用
    • rlocus
    • 绘制根轨迹曲线。
    • 结合
    • grid
    • title
    • 等指令优化图表外观。
  3. 构建闭环系统
    • 使用
    • tf
    • 将系数封装为传递函数对象
    • G
    • 再通过
    • feedback(G, 1)
    • 形成单位负反馈下的闭环系统
    • G_c
  4. 仿真阶跃响应
    • 再次使用
    • figure
    • 创建独立绘图区域。
    • 调用
    • step
    • 进行阶跃响应仿真并绘图。
    • 配合
    • grid
    • title
    • xlabel
    • ylabel
    • 等命令完善图像标注。

总结

  • 根轨迹图绘制:用于研究开环增益 K 从 0 到 ∞ 变化过程中,闭环极点在 s 平面上的移动轨迹,辅助判断系统稳定性变化趋势。
  • 阶跃响应曲线绘制:在单位负反馈架构下,施加单位阶跃输入,观察系统输出随时间演化的动态行为。
  • 建模过程
  • tf
  • 分析手段
  • rlocus
    (用于评估系统稳定性)、
    step
    (用于分析瞬态性能指标)
  • 系统连接方式
  • feedback
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB atlab matla 传递函数 Mat

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 13:55