【问题标题】:plotting ROOT LOCUS for parametric zero绘制参数零的根轨迹
【发布时间】:2014-12-16 22:37:30
【问题描述】:

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

这是系统:

MATLAB 函数 rlocus 绘制不同增益参数 K 的闭环极点。 我想绘制可变参数 a 的闭环极点,它显示为系统 G 的零。

我知道可以对描述闭环极点的代数表达式进行操作,使其匹配不同定义良好系统 G*1+aG*=0 /强>,

我想直接用 MATLAB 函数来做。

谢谢

【问题讨论】:

  • 如果您将K增益限制为1,并将传递函数输入到带有rlocus(num, den, K)的循环中
  • @mehmet - 关闭,但您需要使用numden 创建一个tf 对象,然后通过rlocus(T, K); 使用rlocus
  • @mehmet - 做出新的回答。如果您想交流,请不要编辑我的答案。
  • @rayryeng 哦,对不起,我不想对你的回答不尊重。如果你收到我的编辑,剩下的就不重要了..
  • @mehmet - 你没有 :) 谢谢你与我交流。我还是看到了你的编辑!非常有趣,感谢您的时间基准

标签: matlab signal-processing


【解决方案1】:

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

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

T(s) = G / (1 + G)

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

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 时获得闭环系统极点.之后,您可以在图表上绘制这些结果。如果你这样做,它似乎运行得更快。比如:

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 时,R 将包含闭环系统极点,而K=1 使用您的问题中指定的G(s)K 也只是 1,因为您只指定了一个增益。您应该得到与上述第一种方法相同的结果。

【讨论】:

  • @Day_Dreamer 我的荣幸!这是我第一次回答与控制相关的问题……这是我的专业领域之一。我会回答更多,但我在这里看不到很多......可能是因为它太专业了。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 2020-08-26
  • 2015-02-22
  • 1970-01-01
相关资源
最近更新 更多