最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデル表現の切り替え

この例では、LTI システムの伝達関数 (TF)、零点-極-ゲイン (ZPK)、状態空間 (SS) および周波数応答データ (FRD) の表現をそれぞれ切り替える方法を示します。

モデル タイプ変換

モデルは、LTI モデルの構築で使用するコマンドを使用して、異なる表現 (tfzpkss、および frd) に変換できます。たとえば、状態空間モデル

sys = ss(-2,1,1,3);

を、零点-極-ゲイン モデルに変換するには、以下のように入力します。

zpksys = zpk(sys)
zpksys =
 
  3 (s+2.333)
  -----------
     (s+2)
 
Continuous-time zero/pole/gain model.

同様に、sys の伝達関数を計算するには、以下のように入力します。

tf(sys)
ans =
 
  3 s + 7
  -------
   s + 2
 
Continuous-time transfer function.

FRD への変換には、周波数ベクトルが必要です。

f = logspace(-2,2,10);
frdsys = frd(sys,f)
frdsys =
 
    Frequency(rad/s)        Response    
    ----------------        --------    
          0.0100        3.5000 - 0.0025i
          0.0278        3.4999 - 0.0070i
          0.0774        3.4993 - 0.0193i
          0.2154        3.4943 - 0.0532i
          0.5995        3.4588 - 0.1375i
          1.6681        3.2949 - 0.2459i
          4.6416        3.0783 - 0.1817i
         12.9155        3.0117 - 0.0756i
         35.9381        3.0015 - 0.0277i
        100.0000        3.0002 - 0.0100i
 
Continuous-time frequency response.

FRD モデルは、TF、ZPK、または SS 表現に変換し直せないことに注意してください (この変換を行うには、System Identification にある周波数領域同定ツールが必要です)。

すべてのモデル タイプの変換パスは、次の図のとおりです。

暗黙的型キャスト

コマンドの中には、特定のタイプの LTI モデルを要求するコマンドがあります。便宜上、このようなコマンドは、入力 LTI モデルを適切な表現に自動的に変換します。たとえば、次のサンプル コードでは、

sys = ss(0,1,1,0);
[num,den] = tfdata(sys,'v')
num = 1×2

     0     1

den = 1×2

     1     0

関数 tfdata は、状態空間モデル sys を等価な伝達関数に自動的に変換して、その分子と分母のデータを取得します。

表現を切り替える場合の注意事項

TF、ZPK、および SS 表現の間での変換には、数値計算が必要であり、乱用した場合には、正確性が失われる場合もあります。SS および FRD 表現は、数値計算に最も適しています。このため、すべてのモデルを SS または FRD に変換し、TF および ZPK 表現は、構築と表示目的のみに使用することをお勧めします。

たとえば、以下の ZPK モデルを

G = zpk([],ones(10,1),1,0.1)
G =
 
     1
  --------
  (z-1)^10
 
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.

TF に変換してから ZPK に以下のように変換し直します。

G1 = zpk(tf(G));

ここで、GG1 の極の位置を以下のように比較します。

G1 = zpk(tf(G));
pzmap(G,'b',G1,'r')
axis([0.5 1.5 -0.4 0.4])
legend('G','G1')

Gz=1 での多重度 10 の極が、G1 で極のクラスタで置換された様子を観察してください。これは、G1 の極が、多項式の根として計算されたために発生します。

また、この多項式の最後の係数の o(eps) 誤差は、根を以下のように移動します。

つまり、伝達関数の表現には、z=1 付近でのシステムの動作を把握するために十分な正確性がありません。これは、以下の GG1 のボード線図でもわかります。

bode(G,'b',G1,'r--'), grid
legend('G','G1')

これらの例が、不要なモデル変換は回避する必要がある理由です。