我想用根轨迹图分析LTI闭环系统。
这是一个系统:

利用MATLAB函数r轨迹绘制变增益参数K的闭环极点。我想画出变参数a的闭环极点,它显示为系统G的零。
我知道操纵描述闭环极点的代数表达式是可能的,这样它就能匹配定义不同的系统1+aG*=0的通用表达式G*,
我想直接用MATLAB函数来做。
谢谢
发布于 2014-12-14 00:30:44
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时,当K=1使用问题中指定的G(s)时,K=1将包含闭环系统极点。K也只是1,因为您只指定了一个增益。您应该得到与上面的第一个方法相同的结果。
https://stackoverflow.com/questions/27459839
复制相似问题