要進行控制系統的仿真那麼傳遞函數確定少不了,那麼它有幾種常見的形式以及如何利用matlab建立呢? 函數
如何構建呢?嘿嘿,以下: 性能
例如 : ui
代碼: spa
num=[8 24 16]; 3d
den=[1 12 47 60 0]; rest
G0=tf(num,den) blog
結果: 性能分析
對於離散系統一樣適用,只不過增長了採樣週期, bfc
例如: grid
採樣週期爲0.5s。
代碼:
num=[1 1];
den=[1 -3 2];
Gz=tf(num,den,'Ts',0.5)
具體語句格式:
結果以下:
你們都知道這種形式的標準公式爲:
離散狀況:
咱們從他能夠看出三個東西:1,零點z;2,極點p;3,增益K;
構造格式以下:(你們固然也能夠把他展開,用tf構建)
例如:
代碼:
z=[-5 -2-2j -2+2j];
p=[-4 -3 -2 -1];
K=6;
G=zpk(z,p,K)
結果以下:
離散的狀況就不用說了。
第一種方法:(具備通用性)
首先須要指明函數中的's',而後就能夠構造符號函數了。
代碼以下:
s=tf('s');
G=5*(s^2+4)/((s+2)^3*(s^2+2*s+2)*(s^2+5))
第一句指明用s代替tf函數中的's',
結果以下:
對於離散系統一樣適用,只不過s變成了z並加上採樣時間而已。
例如對於上面離散的例子:
z=tf('z',0.5);
H=(z+1)/(z^2-3*z+2)
結果:
第二種形式:(利用conv()函數,固然也具備通用性,矩陣乘法)
因爲咱們將多項式表示爲一維矩陣的形式,故多項式的運算固然能夠用矩陣的相關運算來代替了(matlab不是稱爲矩陣實驗室嗎)。
C = conv(A, B) convolves vectors A and B.
格式以下:
對於
代碼:
結果就不貼了。
所用函數爲函數c2d(sysc,Ts,'method');
sysc-所須要離散的連續傳遞函數
Ts-採樣週期
Method-離散化方法,經常使用有如下幾種:
例如:
採樣週期爲1s。
代碼:
num=[8 24 16];
den=[1 12 47 60 0];
G=tf(num,den);
Ts=1;
G1=c2d(G,Ts,'zoh')
G2=c2d(G,Ts,'tustin')
結果以下:
調用函數爲 d2c(sysd,'method'); method與c2d()函數同樣,在這裏就不囉嗦了。
如今已經知道了傳遞函數的構建與離散,還須要構造閉環傳函,函數爲feedback(Gs,Hs); 簡單吧!
單位階躍響應:step(sysc);
單位衝擊響應:impulse(sysc);
其餘。。。。。。
任意函數:lsim();
調用格式:
例如開環傳函以下,求單位負反饋時單位階躍響應:
代碼:
clear;
num=60;
den=[1 4 0];
Gs=tf(num,den);
close_Gs=feedback(Gs,1);
step(close_Gs)
結果以下:
關於圖像,直接在圖像上右鍵,即可以看到系統的相關性能參數,好比超調量,上升時間,調整時間等。
零極點分佈圖:pzmap(傳遞函數);根軌跡分佈圖:rlocus(傳遞函數);
例如:(只舉例零極點分佈圖)
sys=tf([3 2 5 4 6],[1 3 4 2 7 2]);
pzmap(sys)
grid on
獲得:叉符號表明極點,圓圈符號是零點,咱們能夠很是清楚的看到,這個系統具備右半平面的極點,因此這個系統是不穩定的!
與連續系統相同。
matlab提供了函數bode(),來繪製bode圖;函數margin(),來求解幅值穩定裕度與相位穩定裕度。
格式:
例如:傳遞函數
num=[10^9 0];
den=conv([1 1000],[1 10^7]);
sys=tf(num,den);
bode(sys);
grid;
結果:
格式:
例如:
num=[10^9 0];
den=conv([1 1000],[1 10^7]);
sys=tf(num,den);
%bode(sys);
nyquist(sys);
grid;
結果: