2014-03-25 321 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