0

2 つの伝達関数をオクターブで分割するにはどうすればよいですか? 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");

前もって感謝します。

4

1 に答える 1

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.
于 2013-10-29T14:55:13.853 に答える