我想使用Root Locus图来分析LTI闭环系统。
这是系统:
MATLAB函数 rlocus 绘制闭环极点,用于变化增益参数 K 。 我想绘制闭环极点来改变参数 a ,它显示为系统的零点 G 。
我知道可以操纵描述闭环极点的代数表达式,因此它可以匹配常用表达式 1 + aG * = 0 用于不同的明确定义的系统 G * < / strong>,
我想直接使用MATLAB函数。
感谢
答案 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;
应该注意Z
和P
是单元格数组,因此使用{:}
展开单元格数组,使它们成为数字数组。上面的代码将执行我刚刚谈到的内容,它将用红色圆圈绘制传递函数的闭环极点。
这就是我得到的:
或者,您可以执行@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,因为您只指定了一个增益。你应该得到与上面第一种方法相同的结果。