MATLAB 創建多項式的方式有兩種:
- 系數多項式
- 符號多項式
1. 系數多項式
p = [an . . . a1 a0]
p_value = polyval(p, k) % 計算自變量值為k時,多項式的值
r = roots(p) % 計算多項式的根
2. 符號多項式
syms t % 創建符號變量 t
p = t^2+2*t+1 % 創建符號多項式
p_value = subs(p, k) % 計算自變量值為k時,多項式的值
3. 兩種形式之間相互轉換
sym2poly(p) % 符號多項式→系數多項式 (包含為零的所有系數)
coeffs(p) % 符號多項式→系數多項式 (除去為零的所有系數)
poly2sym(p) % 系數多項式→符號多項式
分式有理函數的裂項形式如下:
pi為系統的極點,ci為常數,ks為增益系數。
分式有理函數與裂項形式之間的相互轉換:
[c, p, k] = residue(num, den) % num, den 分別為有理函數的分子和分母
[num, den] = residue(c, p, k) % 裂項形式→分式函數形式
傳遞函數是線性定常系統,在零初始條件下,以復數為變量的有理函數。
描述的是系統輸入與輸出之間的關系,如下所示:
創建傳遞函數命令一:
sys = tf(num, den)
創建一個時間連續傳遞函數。
創建傳遞函數命令二:
sys = zpk(z, p, k) % z, p 均為陣列,包含系統所有的零、極點,k 為增益系數。
% 當系統傳遞函數沒有零點時,僅輸入 z = [ ]
創建一個“零-極點”形式的傳遞函數,如下所示:
能直觀地看出系統的零點、極點。
創建傳遞函數命令三:
s = tf('s') % 創建多項式形式傳遞函數的變量 s
s = zpk('s') % 創建系數形式傳遞函數的變量 s
同樣地,上述兩種形式傳遞函數之間可以互相轉換:
s = tf('s') % 將原本系數形式的傳遞函數的變量 s 轉換為多項式形式
s = zpk('s') % 將原本多項式形式的傳遞函數的變量 s 轉換為系數形式
此種方法類似於創建符號多項式,先用“syms t”聲明一個符號變量 t,再創建多項式。
主要用於子系統傳遞函數,而系統總傳遞函數未知的場景中。
互相轉換方法:
分式形式(多項式形式)⇌ “零點-極點-增益”形式(系數形式)
1. 分式形式→“零點-極點-增益”形式
sys = tf(num, den) % 分式形式傳遞函數
sys_zpk = zpk(sys) % 分式形式的傳遞函數→“零點-極點-增益”形式的傳遞函數
或者
[z, p, k] = tf2zp(num, den) % tf2zp(num, den) 輸入“分子-分母”,返回傳遞函數的“z, p, k”
sys = zpk(z, p, k) % 即上面的“創建傳遞函數命令二”
2. “零點-極點-增益”形式→分式形式
sys = zpk(z, p, k)
sys_tf = tf(sys) % “零點-極點-增益”形式的傳遞函數→分式形式的傳遞函數
或者
[num, den] = zp2tf(z, p, k) % zp2tf(z, p, k) 輸入“z, p, k”,返回傳遞函數的“分子-分母”
sys = tf(num, den) % 即上面的“創建傳遞函數命令一”
練習題 1:
用tf(num, den)命令創建如下所示傳遞函數,並將其轉換為“零點-極點-增益”形式。
解答:
num = [1 1];
den = [1 3 1];
sys = tf(num, den)
sys_zpk = zpk(sys)
練習題 2:
用zpk(z, p, k)命令創建如下所示傳遞函數,並將其轉換為分式形式。
解答:
z = [-2];
p = [-1 -1 -3];
k = 1;
sys = zpk(z, p, k)
sys_tf = tf(sys)
練習題 3:
用創建傳遞函數的變量方式,創建不同形式的傳遞函數。
解答:
s = tf('s');
sys = (s+1)/(s^2+2*s+1)
s = zpk('s');
sys = (s+1)/(s^2+2*s+1)