2014-03-25 287 views
1

给定一个函数(称为sys(s)),我们可以使用matlab:rlocus(sys)来绘制该函数的根轨迹。 (s)=(2s + 2 + b)/ s,我如何使用matlab绘制rlocus(sys)作为参数b的函数?matlab,如何绘制“根轨迹”

回答

2

比方说,与1

b = 1:100; 

我们需要创建轴和追究他们,这样我们就可以在彼此顶部绘制根轨迹间隔1和100之间b变化。

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) 
+0

非常感谢您的帮助。我也想知道,我该如何在图表上指出哪种颜色对应于哪个b值? – user3222184

+0

@ user3222184我添加了关于添加图例的信息。希望能帮助到你。 – HebeleHododo