2013-10-28 1 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. 
관련 문제