给定一个函数(称之为sys(s)),我们可以使用matlab:rlocus(sys)
来绘制该函数的根轨迹。
但是,如果我们给出一个带参数的函数(比如说b),例如sys(s)=(2s + 2 + b )/ s,我怎样才能用matlab绘制rlocus(sys)作为参数b?
的函数答案 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
这是结果图:
我找不到矢量化解决方案,因此需要很长时间。我的电脑花了45秒。如果需要计算多个值,则需要一个矢量化解决方案。
要添加图例,您需要创建一个单元格数组来存储b
值。
legendStr = cell(1, length(b));
然后,在for循环中,您需要将b
值转换为字符串并将其存储在legendStr
中。
legendStr{idx} = num2str(b(idx));
在for循环之后将图例添加到图中。
legend(legendStr)