matlab,如何绘制“根轨迹”

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

但是,如果我们给出一个带参数的函数(比如说b),例如sys(s)=(2s 2 b )/ s,我如何使用matlab将rlocus(sys)绘制为参数b的函数?

回答(1)

2 years ago

假设 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)