绘制参数零点的ROOT LOCUS

时间:2014-12-13 14:26:20

标签: matlab signal-processing

我想使用Root Locus图来分析LTI闭环系统。

这是系统:

This is the system:

MATLAB函数 rlocus 绘制闭环极点,用于变化增益参数 K 。 我想绘制闭环极点来改变参数 a ,它显示为系统的零点 G

我知道可以操纵描述闭环极点的代数表达式,因此它可以匹配常用表达式 1 + aG * = 0 用于不同的明确定义的系统 G * < / strong>,

我想直接使用MATLAB函数。

感谢

1 个答案:

答案 0 :(得分: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是单元格数组,因此使用{:}展开单元格数组,使它们成为数字数组。上面的代码将执行我刚刚谈到的内容,它将用红色圆圈绘制传递函数的闭环极点。

这就是我得到的:

enter image description here


或者,您可以执行@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,因为您只指定了一个增益。你应该得到与上面第一种方法相同的结果。