2013-10-28 38 views
0

如何將八個傳遞函數分成八度?我想計算總傳遞函數:A = CPTd/1 + CPTe + CP,其中C,P,Td和Te本身都是傳遞函數。如何將八個傳遞函數分成八度?

我的代碼:

# not a function file: 
Wn = 4000; 
DampingRatio = 2^-0.5; 
P=tf([1],[0.001 1]); 
C=tf([Wn^2],[1 2*DampingRatio*Wn 0])/P; 
Td=tf([-0.0001 1],[0.0001 1]); 
Te=tf([-0.00001 1],[0.00001 1]); 
CP=sysmult(C,P); 

A_num=sysmult(CP,Td); 
A_denum=sysadd(tf([1],[1]), sysadd(sysmult(CP,Te),CP)); 
A = Anum/A_denum; 
sysout(A, "tf"); 

在此先感謝。

+0

你從哪裏得到'sysmult'?它似乎不在Octave 3.6.2的控制包中 – am304

回答

0

簡單乘法應該可行(使用Octave 3.6.2)。 minreal創建了傳遞函數的最小實現。

>> A = C*P*Td/(1+C*P*Te+C*P) 

Transfer function 'A' from input 'u1' to output ... 

        -1.6e-011 s^9 - 1.669e-006 s^8 - 0.005715 s^7 + 127.6 s^6 + 
9.128e+005 s^5 + 1.94e+009 s^4 + 1.671e+012 s^3 + 5.12e+014 s^2 
y1: -------------------------------------------------------------------------- 
------------------------------------------------------------------------------- 
     1e-018 s^11 + 1.3e-013 s^10 + 3.347e-009 s^9 + 4.018e-005 s^8 + 0.2859 s^7 
+ 1294 s^6 + 3.544e+006 s^5 + 5.192e+009 s^4 + 3.717e+012 s^3 + 1.024e+015 s^2 

Continuous-time model. 
>> A = minreal(A) 

Transfer function 'A' from input 'u1' to output ... 

        -1.6e+007 s^5 - 1.488e+012 s^4 + 1.163e+016 s^3 + 4.366e+019 s 
^2 + 4.656e+022 s + 1.6e+025 
y1: -------------------------------------------------------------------------- 
---------------------------------------- 
     s^7 + 1.187e+005 s^6 + 1.972e+009 s^5 + 1.407e+013 s^4 + 6.355e+016 s^3 + 
1.242e+020 s^2 + 1.049e+023 s + 3.2e+025 

Continuous-time model.