Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

absorbDelay

むだ時間を z = 0 または移相シフトでの極に置き換える

構文

sysnd = absorbDelay(sysd)
[sysnd,G] = absorbDelay(sysd)

説明

sysnd = absorbDelay(sysd) は、動的システム モデル sysd のすべてのむだ時間をシステムのダイナミクスまたは周波数応答データに吸収します。

離散時間モデル (周波数応答データ モデルを除く) の場合、k サンプリング周期の遅延は z = 0 での k 極に置き換えられます。連続時間モデル (周波数応答データ モデルを除く) の場合、むだ時間は有限個の極と零点による正確な表現をもちません。そのため、pade (Control System Toolbox) を使用してむだ時間の有理数近似を計算します。

連続時間と離散時間の両方の周波数応答データ モデルの場合、absorbDelay はすべてのむだ時間を位相シフトとして周波数応答データ内に吸収します。

[sysnd,G] = absorbDelay(sysd) は、行列 G を返します。これは ss (Control System Toolbox) モデル sysd の初期状態を sysnd の初期状態にマッピングします。

すべて折りたたむ

むだ時間がある離散時間伝達関数を作成します。

z = tf('z',-1);
sysd = (-0.4*z -0.1)/(z^2 + 1.05*z + 0.08);
sysd.InputDelay = 3
sysd =
 
              -0.4 z - 0.1
  z^(-3) * -------------------
           z^2 + 1.05 z + 0.08
 
Sample time: unspecified
Discrete-time transfer function.

伝達関数分母に現れるシステムの極とは別に、sysd の表示は、InputDelayz^(-3) の係数として表します。

そのむだ時間を、z= 0 の極としてシステム ダイナミクス内に吸収します。

sysnd = absorbDelay(sysd)
sysnd =
 
        -0.4 z - 0.1
  -------------------------
  z^5 + 1.05 z^4 + 0.08 z^3
 
Sample time: unspecified
Discrete-time transfer function.

sysnd の表示は、z^(-3) の係数が追加の極として分母に吸収されていることを示します。

sysnd に入力遅延がないことを確認します。

sysnd.InputDelay
ans = 0

離散時間多項式モデルを作成します。

m = idpoly(1,[0 0 0 2 3]);

m を伝達関数モデルに変換します。

sys = tf(m)
sys =
 
  z^(-2) * (2 z^-1 + 3 z^-2)
 
Sample time: unspecified
Discrete-time transfer function.

伝達関数 sys の分子は [0 2 3] であり、伝達遅延 sys.IODelay は 2 です。これは、B 多項式の値である m.B の先頭に 3 つのゼロが付加されているためです。固定された最初のゼロは、モデル内に直達がないことを示しています。その後ろの 2 つのゼロは、入力 - 出力遅延として扱われます。

先頭のゼロを通常の B 係数として扱うには、absorbDelay を使用します。

m2 = absorbDelay(m);
sys2 = tf(m2)
sys2 =
 
  2 z^-3 + 3 z^-4
 
Sample time: unspecified
Discrete-time transfer function.

sys2 の分子は [0 0 0 2 3] であり、伝達遅延は 0 です。モデル m2 は値を解放することによって、先頭のゼロを通常の係数として扱います。m2.Structure.B.Free(2:3)TRUE ですが、m.Structure.B.Free(2:3)FALSE になります。

バージョン履歴

R2012a で導入

参考

| (Control System Toolbox) |