12/22/2006

12.12 轉移函數

12.12轉移函數

此處先介紹轉移函數tf的功能。此函數指在轉換LTI模式至另一種轉移函數型式,或稱為拉普拉斯轉換,以轉移函數在拉普拉斯領域中表示控制對象。這種型式包括實數或複數值之轉換、狀態空間變數之轉換或零極增益(Zero-pole-gain)模式之變數等。其處理資料方式包括單一輸出入(SISO)及多重輸出輸入(MIMO)等二種。

設以下面之h(s)為例,求其轉換函數、零點、極點及增益等。


h(s)=

s² + 3 s + 2
-----------
s3 + 4 s² + 3 s + 1

上述之分母分子多項式,可以用轉換函數表示如下:

>> sys=tf([1 3 2],[1 4 3 1]) %組立轉移函數

Transfer function:
s^2 + 3 s + 2
---------------------
s^3 + 4 s^2 + 3 s + 1


此即為一般所用之表示式,作為TF之物件。在這裡也可以先設定s變數為TF物件之特殊變數,則公式所用之表示式會與前面之表示式一樣。例如:
  
s=tf('s');
H=(s^2+3*s+2)/(s^3+4*s^2+3*s+1)

Transfer function:
s^2 + 3 s + 2
---------------------
s^3 + 4 s^2 + 3 s + 1


這個結果與sys之變數內涵相同。在這裡s變數只要宣告一次即可,除非在zpk指令中再將s變數轉換。

在多重輸出輸入(MIMO)轉換函數中,可能需要兩維陣列之SISO函數。其處理方式分合併SISO函數模型或使用tf指令,但其參數使用細胞陣列。例如:
 
H(s) =

s -1
------
s + 1

s + 2
------------
s²+4s+5

此時可以使用兩個SISO之函數運作,例如:
 
h11=tf([1 -1],[1 1])
h12=tf([1 2],[1 4 5])

Transfer function:
s - 1
-----
s + 1
Transfer function:
s + 2
-------------
s^2 + 4 s + 5


或者採用設定's'拉普拉斯參數法:

>>s=tf('s');h12=(s-1)/(s+1)
>>h22=(s+2)/(s^2+4*s+5)

Transfer function:
s - 1
-----
s + 1
Transfer function:
s + 2
-------------
s^2 + 4 s + 5


結果與h11與h12相同。最後H(s)可以合併為:

>>H=[h12;h22]


Transfer function from input to output...
s - 1
#1: -----
s + 1
s + 2
#2: -------------
s^2 + 4 s + 5


這種方式比較簡潔易明。另外之方法則利用tf函數指令而採用細胞陣列(設為N與D)代表其分子與分母。亦即:

有關此MIMO轉換矩陣之輸入順多如下:

N={[1 -1];[1 2]}; % N(s)
D={[1 1];[1 4 5]}; % D(s)
H=tf(N,D)


Transfer function from input to output...
s - 1
#1: -----
s + 1
s + 2
#2: -------------
s^2 + 4 s + 5


tfdata指令


指令tf執行結果均以物件表示,若要將其轉換回原分子與分母之型式,則必須採用tfdata指令,等於tf之反向指令。例如:

>>h=tf([1 1],[1 2 5])
Transfer function:
s + 1
-------------
s^2 + 2 s + 5

>>[num, den]=tfdata(h,'v')
num =
0 1 1
den =
1 2 5


其回應值為兩個列向量。若採用多項輸出入(MIMO),將上述物件h改為:

>>H=[h;tf(1,[ 1 1])];
>>[num, den]=tfdata(H);
>>celldisp(num)
>>celldisp(den)
num{1} =
0 1 1
num{2} =
0 1
den{1} =
1 2 5
den{2} =
1 1