首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参数零点的根轨迹绘制

参数零点的根轨迹绘制
EN

Stack Overflow用户
提问于 2014-12-13 14:26:20
回答 1查看 1.1K关注 0票数 0

我想用根轨迹图分析LTI闭环系统。

这是一个系统:

利用MATLAB函数r轨迹绘制变增益参数K的闭环极点。我想画出变参数a的闭环极点,它显示为系统G的零。

我知道操纵描述闭环极点的代数表达式是可能的,这样它就能匹配定义不同的系统1+aG*=0的通用表达式G*

我想直接用MATLAB函数来做。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-14 00:30:44

rlocus假设闭环控制系统有单元反馈,并且有一个比例控制器,用来改变增益来绘制极点和零点。如果您想改变零点并绘制闭环极点的位置,则可以在指定的范围内循环.说..。在-2和-2之间,以0.01的步数计算闭环传递函数,并从结果中提取极点。如果您回想起控制理论,闭环系统的传递函数是:

G(s)将是前向循环中的传递函数,即图片中的G(s),而H(s)将是反馈的传递函数,即图片中的1。因此,您的闭环TF是:

代码语言:javascript
运行
复制
T(s) = G / (1 + G)

对于a的每个值,只需使用在G(s)中定义的极点和零点通过zpk创建一个传递函数,然后计算G / (1 + G),然后从这个新的传递函数中提取出极点。一旦用zpkdata提取了这些极点,就可以在图上绘制这些极点的真实和虚构的成分。确保您生成了一个新的图形,并使用hold on允许使用for循环迭代绘制多个点。因此,您的代码可能如下所示:

代码语言:javascript
运行
复制
figure;
hold on;
for a = -2 : 0.01 : 2
    G = zpk([-a -1], [0 0 0], 1);
    T = G / (1 + G);
    [Z,P,K] = zpkdata(T);
    plot(real(P{:}), imag(P{:})', 'ro');
end
grid;

应该注意的是,ZP是单元数组,因此使用{:}将单元格数组数据展开,使它们成为数字数组。上面的代码将完成我刚才提到的内容,它将用红色的圆圈绘制你的传递函数的闭环极点。

我得到的是:

或者,您可以执行@mehmet建议的操作,您可以用一个zpkdata调用替换rlocus调用,但是为该语句提供一个输出变量,以便在K=1时得到闭环系统极点。然后,你可以在你的图表上画出这些结果。如果你这样做,它似乎跑得更快。类似于:

代码语言:javascript
运行
复制
figure;
hold on;
for a = -2 : 0.01 : 2
    G = zpk([-a -1], [0 0 0], 1);
    [R,K] = rlocus(G, 1);
    plot(real(R), imag(R), 'ro');
end
grid;

当您以这种方式调用rlocus时,当K=1使用问题中指定的G(s)时,K=1将包含闭环系统极点。K也只是1,因为您只指定了一个增益。您应该得到与上面的第一个方法相同的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27459839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档