0

私は実装されたこのチュートリアルに従おうとしています

function transfer_function = tf(numerator, denominator)
    transfer_function = syslin('c', poly(numerator, "s", "coeff") / poly(denominator, "s", "coeff"));
endfunction

// physical constants:

R = 2.0;                // Ohms
L = 0.5;                // Henrys
Km = 0.1;               // torque constant
Kb = 0.1;               // back emf constant
Kf = 0.2;               // Nms
J = 0.02;               // kg.m^2/s^2

// state-space model:

h1 = tf(Km, [L R]);            // armature
h2 = tf(1, [J Kf]);            // eqn of motion

dcm = tf2ss(h2) * [h1, 1];       // w = h2 * (h1 * Va + Td)

それが返す

--> DCM
 dcm =


 dcm(1) (状態空間システム:)

  「lss」「A」「B」「C」「D」「X0」「dt」

 dcm(2)= 行列 =

  -0.1 0.5
   0. -0.25

 dcm(3)= B 行列 =

   0.2.236068
   0.2236068 0.      

 dcm(4)= C 行列 =

   2.236068 0.

 dcm(5)= D 行列 =

   0.0.

 dcm(6)= X0 (初期状態) =

   0.
   0.

 dcm(7)= 時間領域 =

  "c"

これは、MATLAB が生成するものとは異なります。

>> DCM

dcm =
 
  A =
        x1 x2
   x1 -10 3.2
   x2 0 -4
 
  B =
        u1 u2
   x1 0 8
   x2 0.5 0
 
  C =
         x1 x2
   年1 6.25 0
 
  D =
       u1 u2
   y1 0 0
 
連続時間状態空間モデル。

今私の質問は:

  • 最小限のtf()機能を正しく実装しましたか、それともより完全な/標準的なバージョンが利用可能/可能ですか?
  • tf2ss()MATLAB と同等のものですss()か、それとも別の組み込み関数が利用可能ですか?
  • 同等のものがない場合ss()、上記の MATLAB チュートリアルと同じ結果をもたらす最小限の実装は何ですか?
4

1 に答える 1