matlab,如何绘制“根轨迹”

时间:2014-03-25 05:25:20

标签: matlab for-loop root

给定一个函数(称之为sys(s)),我们可以使用matlab:rlocus(sys)来绘制该函数的根轨迹。

但是,如果我们给出一个带参数的函数(比如说b),例如sys(s)=(2s + 2 + b )/ s,我怎样才能用matlab绘制rlocus(sys)作为参数b?

的函数

1 个答案:

答案 0 :(得分:2)

假设b在1到100之间变化,间隔为1。

b = 1:100;

我们需要创建轴并保持它们,以便我们可以将根轨迹绘制在彼此之上。

axes();
hold('on');

现在我们需要为每个b创建一个传递函数并绘制其根轨迹。

for idx = 1:length(b)
   sys = tf([2 2+b(idx)], [1 0]);
   rlocus(sys);
end

这是结果图: Root locus

我找不到矢量化解决方案,因此需要很长时间。我的电脑花了45秒。如果需要计算多个值,则需要一个矢量化解决方案。


要添加图例,您需要创建一个单元格数组来存储b值。

legendStr = cell(1, length(b));

然后,在for循环中,您需要将b值转换为字符串并将其存储在legendStr中。

legendStr{idx} = num2str(b(idx));

在for循环之后将图例添加到图中。

legend(legendStr)