Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

zpk

零点-極-ゲイン モデル

    説明

    zpk を使用して零点-極-ゲイン モデルを作成するか、動的システム モデルを零点-極-ゲイン形式に変換します。

    零点-極-ゲイン モデルは、因数分解した形式で伝達関数を表したものです。たとえば、次の連続時間 SISO 伝達関数について考えてます。

    G(s)=s23s4s2+5s+6

    G(s) は、次のように零点-極-ゲイン形式に因数分解できます。

    G(s)=(s+1)(s4)(s+2)(s+3).

    SISO 零点-極-ゲイン モデルのより一般的な表現は次のとおりです。

    h(s)=k(sz(1))(sz(2))(sz(m))(sp(1))(sp(2))(sp(n))

    ここで、zp は実数値または複素数値の零点と極で、K は実数値または複素数値のスカラー ゲインです。

    零点-極-ゲイン モデル オブジェクトを作成するには、極、零点およびゲインを直接指定するか、(状態空間モデル ss などの) 別のタイプのモデルを零点-極-ゲイン形式に変換することができます。

    zpk を使用して、一般化状態空間 (genss) モデルや不確かさをもつ状態空間 (uss (Robust Control Toolbox)) モデルを作成することもできます。

    作成

    説明

    sys = zpk(zeros,poles,gain) は、ベクトルとして指定された zerospoles および gain のスカラー値を使用して連続時間零点-極-ゲイン モデルを作成します。出力 sys はモデル データを格納する zpk モデル オブジェクトです。零点または極がないシステムでは、zeros または poles[] に設定してください。この 2 つの入力は長さが同じである必要はなく、モデルはプロパーである必要はありません (つまり、極が過剰に存在)。

    sys = zpk(zeros,poles,gain,ts) は、サンプル時間 ts で離散時間零点-極-ゲイン モデルを作成します。サンプル時間を未指定のままにするには、ts-1 または [] に設定します。

    sys = zpk(zeros,poles,gain,ltiSys) は、サンプル時間を含む、動的システム モデル ltiSys から継承されたプロパティをもつ零点-極-ゲイン モデルを作成します。

    sys = zpk(m) は、静的ゲイン m を表す零点-極-ゲイン モデルを作成します。

    sys = zpk(___,Name,Value) は、前述の任意の入力引数の組み合わせについて名前と値のペアの引数を 1 つ以上使用して、零点-極-ゲイン モデルのプロパティを設定します。

    sys = zpk(ltiSys) は、動的システム モデル ltiSys を零点-極-ゲイン モデルに変換します。

    sys = zpk(ltiSys,component) は、ltiSys の指定された component を零点-極-ゲイン モデル形式に変換します。この構文を使用するのは、ltiSys が、idss モデルや idtf モデルなどの同定された線形時不変 (LTI) モデルである場合のみです。

    s = zpk('s') は、連続時間の零点-極-ゲイン モデルを作成するための有理式で使用できる、特殊な変数 s を作成します。有理式を使用すると、多項式係数を指定するよりも簡単でより直観的になる場合があります。

    z = zpk('z',ts) は、離散時間の零点-極-ゲイン モデルを作成するための有理式で使用できる、特殊な変数 z を作成します。サンプル時間を未指定のままにするには、ts 入力引数を -1 に設定します。

    入力引数

    すべて展開する

    零点-極-ゲイン モデルの零点。次のように指定します。

    • SISO モデルの行ベクトル。たとえば、[1,2+i,2-1] を使用して、s = 1s = 2+i、および s = 2-i の零点をもつモデルを作成します。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。

    • 行ベクトルからなる NyNu 列の cell 配列。これは MIMO 零点-極-ゲイン モデルを指定し、Ny は出力の数、Nu は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。

    たとえば、a が、ノミナル値 3realp 調整可能パラメーターである場合、zeros = [1 2 a] を使用して、s = 1s = 2 の零点および s = 3 の調整可能な零点をもつ genss モデルを作成できます。

    zpk オブジェクトのプロパティでもあります。この入力引数では、プロパティ Z の初期値を設定します。

    零点-極-ゲイン モデルの極。次のように指定します。

    zpk オブジェクトのプロパティでもあります。この入力引数では、プロパティ P の初期値を設定します。

    零点-極-ゲイン モデルのゲイン。次のように指定します。

    zpk オブジェクトのプロパティでもあります。この入力引数では、プロパティ K の初期値を設定します。

    スカラーとして指定されたサンプル時間。zpk オブジェクトのプロパティでもあります。この入力引数では、プロパティ Ts の初期値を設定します。

    動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

    • tfzpkss、または pid モデルなどの連続時間または離散時間の数値 LTI モデル。

    • genssuss (Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル (不確かさをもつモデルを使用するには Robust Control Toolbox™ のライセンスが必要です)。

      結果として得られる零点-極-ゲインモデルは次を仮定します。

      • 調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。

      • 不確かさをもつ制御設計ブロックについてはモデルのノミナル値。

    • idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox)idpoly (System Identification Toolbox)idgrey (System Identification Toolbox) モデルなどの、同定された LTI モデル。同定されたモデルの変換する成分を選択するには、component を指定します。component を指定しない場合、tf は、同定されたモデルの測定成分を既定で変換します。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です)。

      同定された非線形モデルは zpk モデル オブジェクトに変換できません。最初に、linearizelinapp などの線形近似関数を使用できます (この機能には、System Identification Toolbox ソフトウェアが必要です)。

    静的ゲイン。スカラーまたは行列として指定します。システムの静的ゲインまたは定常状態ゲインは、定常状態の条件下における出力の入力に対する比率を表します。

    同定されたモデルの変換対象とするコンポーネント。次のいずれかとして指定します。

    • 'measured'sys の測定成分を変換します。

    • 'noise'sys のノイズ成分を変換します。

    • 'augmented'sys の測定成分とノイズ成分の両方を変換します。

    component が適用されるのは、sys が同定された LTI モデルである場合のみです。

    同定された LTI モデルおよびその測定成分とノイズ成分の詳細については、同定された LTI モデルを参照してください。

    出力引数

    すべて展開する

    出力システム モデル。以下として返されます。

    • 入力引数 zerospoles および gain に数値が含まれる場合は、零点-極-ゲイン (zpk) モデル オブジェクト。

    • 入力引数 zerospoles または gainrealp パラメーターや一般化行列 (genmat) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss) オブジェクト。

    • 入力引数 zerospoles または gain に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss) オブジェクト(不確かさをもつモデルを使用するには Robust Control Toolbox のライセンスが必要です)。

    プロパティ

    すべて展開する

    システムの零点。次のように指定します。

    • 伝達関数零点の cell 配列または SISO モデルの分子の根。

    • MIMO モデルの各 I/O ペアに対する零点の行ベクトルからなる NyNu 列の cell 配列。ここで、Ny は出力数および Nu は入力数です。

    Z の値は実数値または複素数値にできます。

    システムの極。次のように指定します。

    • SISO モデルの場合は伝達関数零点の cell 配列または分母の根。

    • MIMO モデルの各 I/O ペアの場合は極の行ベクトルからなる NyNu 列の cell 配列。ここで、Ny は出力数および Nu は入力数です。

    P の値は実数値または複素数値にできます。

    システム ゲイン。次のように指定します。

    • SISO モデルの場合はスカラー値。

    • MIMO モデルの各 I/O ペアの場合はゲイン値を格納する NyNu 列の行列。ここで、Ny は出力数および Nu は入力数です。

    K の値は実数値または複素数値にできます。

    分子と分母の多項式を表示するために因数分解する方法。次のいずれか 1 つとして指定します。

    • 'roots' — 多項式の根の位置に関する係数を表示します。'roots'DisplayFormat の既定値です。

    • 'frequency' — 根の固有振動数 ω0 と減衰比 ζ に関する係数を表示します。

      'frequency' 表示形式は、Variable の値 'z^-1' または 'q^-1' をもつ離散時間モデルには使用できません。

    • 'time constant' — 根の時定数 τ と減衰比 ζ に関する係数を表示します。

      'time constant' 表示形式は、Variable の値 'z^-1' または 'q^-1' をもつ離散時間モデルには使用できません。

    連続時間モデルの場合、以下の表は多項式の係数が各表示形式でどのように配置されるかを示します。

    DisplayName1 次係数 (実根 R)2 次係数 (複素根ペア R=a±jb)
    'roots'(sR)(s2αs+β), ここで、α=2a, β=a2+b2
    'frequency'(1sω0), ここで、ω0=R12ζ(sω0)+(sω0)2, ここで、ω02=a2+b2, ζ=aω0
    'time constant'(1τs), ここで、τ=1R12ζ(τs)+(τs)2, ここで、τ=1ω0, ζ=aτ

    離散時間モデルの場合、多項式の係数は以下の変数の代入により連続時間モデルと同様に配置されます。

    sw=z1Ts;RR1Ts,

    ここで、Ts はサンプル時間です。離散時間では、τ と ω0 は、等価な連続時間根の時定数と固有振動数と厳密に一致します。ただし、次の条件が満たされていることが必要です。|z1|<<Ts(ω0<<πTs=Nyquist frequency)

    零点-極-ゲイン モデルの表示変数。以下のいずれかとして指定します。

    • 's' — 連続時間モデルの場合の既定値

    • 'z' — 離散時間モデルの既定値

    • 'p''s' と等価

    • 'q''z' と等価

    • 'z^-1''z' の逆

    • 'q^-1''z^-1' と等価

    伝達遅延。次のいずれかとして指定します。

    • スカラー — SISO システムに伝達遅延を、または MIMO システムのすべての入出力ペアに対して同じ伝達遅延を指定します。

    • NyNu 列の配列 — MIMO システムの入出力ペアごとに別々の伝達遅延を指定します。ここで、Ny は出力の数、Nu は入力の数です。

    連続時間システムの場合は、TimeUnit プロパティによって指定された時間単位で伝達遅延を指定します。離散時間システムの場合、サンプル時間 Ts の整数倍で伝達遅延を指定します。むだ時間の詳細については、線形システムでのむだ時間を参照してください。

    各入力チャネルの入力遅延。次のいずれかとして指定します。

    • スカラー — SISO システムに入力遅延を、または多入力システムのすべての入力に同じ遅延を指定します。

    • Nu 行 1 列のベクトル — 多入力システムの入力に別々の入力遅延を指定します。Nu は入力の数です。

    連続時間システムの場合は、TimeUnit プロパティによって指定された時間単位で入力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts の整数倍で入力遅延を指定します。

    詳細については、線形システムでのむだ時間を参照してください。

    各出力チャネルの出力遅延。次のいずれかとして指定します。

    • スカラー — SISO システムに出力遅延を、または多出力システムのすべての出力に同じ遅延を指定します。

    • Ny 行 1 列のベクトル — 多出力システムの出力に別々の出力遅延を指定します。Ny は出力の数です。

    連続時間システムの場合は、TimeUnit プロパティによって指定された時間単位で出力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts の整数倍で出力遅延を指定します。

    詳細については、線形システムでのむだ時間を参照してください。

    サンプル時間。以下として指定します。

    • 0 (連続時間システムの場合)。

    • 離散時間システムのサンプリング周期を表す正のスカラー。TsTimeUnit プロパティによって指定される時間単位で指定します。

    • -1 (サンプル時間が指定されていない離散時間システムの場合)。

    メモ

    Ts を変更してもモデルの離散化やリサンプリングは行われません。連続時間表現と離散時間表現の間の変換を行うには、c2dd2c を使用します。離散時間システムのサンプル時間を変更するには、d2d を使用します。

    時間変数の単位。次のいずれかとして指定します。

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    TimeUnit の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

    入力チャネル名。以下のいずれかとして指定します。

    • 文字ベクトル (単入力モデルの場合)。

    • 文字ベクトルの cell 配列 (多入力モデルの場合)。

    • '' (いずれの入力チャネルにも名前を指定しない場合)。

    あるいは、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てることもできます。たとえば、sys が 2 入力モデルである場合は、以下のようになります。

    sys.InputName = 'controls';

    入力名は自動的に {'controls(1)';'controls(2)'} へと拡張されます。

    省略形表記 u を使用して、InputName プロパティを参照できます。たとえば、sys.usys.InputName と同じです。

    InputName の使用目的は次のとおりです。

    • モデル表示とプロット上のチャネルの識別

    • MIMO システムのサブシステムの抽出

    • モデル相互接続時における接続点の指定

    入力チャネル単位。以下のいずれかとして指定します。

    • 文字ベクトル (単入力モデルの場合)。

    • 文字ベクトルの cell 配列 (多入力モデルの場合)。

    • '' (いずれの入力チャネルにも単位を指定しない場合)。

    InputUnit を使用して入力信号の単位を指定します。InputUnit はシステムの動作に影響しません。

    入力チャネル グループ。構造体として指定します。InputGroup プロパティを使用して、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照します。InputGroup のフィールド名はグループ名であり、フィールドの値は各グループの入力チャネルです。以下に例を示します。

    sys.InputGroup.controls = [1 2];
    sys.InputGroup.noise = [3 5];

    これは、入力チャネル 12、および 35 をそれぞれ含む、controls および noise という名前の入力グループを作成します。その後、以下を使用して controls 入力からすべての出力にサブシステムを抽出できます。

    sys(:,'controls')

    既定では、InputGroup はフィールドのない構造体です。

    出力チャネル名。次のいずれかとして指定されます。

    • 文字ベクトル (単出力モデルの場合)。

    • 文字ベクトルの cell 配列 (多出力モデルの場合)。

    • '' (いずれの出力チャネルにも名前を指定しない場合)。

    あるいは、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てることもできます。たとえば、sys が 2 出力力モデルである場合は、以下のようになります。

    sys.OutputName = 'measurements';

    出力名は自動的に {'measurements(1)';'measurements(2)'} へと拡張されます。

    省略形表記 y を使用して OutputName プロパティを参照することもできます。たとえば、sys.ysys.OutputName と同じです。

    OutputName の使用目的は次のとおりです。

    • モデル表示とプロット上のチャネルの識別

    • MIMO システムのサブシステムの抽出

    • モデル相互接続時における接続点の指定

    出力チャネル単位。次のいずれかとして指定されます。

    • 文字ベクトル (単出力モデルの場合)。

    • 文字ベクトルの cell 配列 (多出力モデルの場合)。

    • '' (いずれの出力チャネルにも単位を指定しない場合)。

    OutputUnit を使用して出力信号の単位を指定します。OutputUnit はシステムの動作に影響しません。

    出力チャネル グループ。構造体として指定します。OutputGroup プロパティを使用して、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照します。OutputGroup のフィールド名はグループ名であり、フィールドの値は各グループの出力チャネルです。以下に例を示します。

    sys.OutputGroup.temperature = [1];
    sys.InputGroup.measurement = [3 5];

    これは、出力チャネル 1、および 35 をそれぞれ含む、temperature および measurement という出力グループを作成します。その後、以下を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

    sys('measurement',:)

    既定では、OutputGroup はフィールドのない構造体です。

    システム名。文字ベクトルとして指定します。たとえば、'system_1' とします。

    システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO' とします。

    システムに関連付けるユーザー指定のデータ。任意の MATLAB データ型として指定します。

    モデル配列のサンプリング グリッド。構造体配列として指定します。

    SamplingGrid を使用して、モデル配列の各モデルに関連付けられている変数値を追跡します。これには同定された線形時不変 (IDLTI) モデル配列も含まれます。

    構造体のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値スカラーでなければならず、サンプル値のすべての配列はモデル配列の次元と一致しなければなりません。

    たとえば、t = 0:10 の各時点で線形時変システムのスナップショットを記録することにより、線形モデルの 11 行 1 列の配列 sysarr を作成することができます。次のコードは線形モデルでの時間サンプルを格納します。

     sysarr.SamplingGrid = struct('time',0:10)

    同様に、2 つの変数 zetaw を個別にサンプリングすることにより、6 行 9 列のモデル配列 M を作成できます。次のコードは (zeta,w) の値を M にマッピングします。

    [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
    M.SamplingGrid = struct('zeta',zeta,'w',w)

    M を表示する際、配列の各エントリは対応する zetaw の値を取り込みます。

    M
    M(:,:,1,1) [zeta=0.3, w=5] =
     
            25
      --------------
      s^2 + 3 s + 25
     
    
    M(:,:,2,1) [zeta=0.35, w=5] =
     
             25
      ----------------
      s^2 + 3.5 s + 25
     
    ...

    複数のパラメーター値または操作点で Simulink® モデルを線形化することにより生成されたモデル配列の場合、SamplingGrid には配列の各エントリに対応する変数値が自動的に入力されます。たとえば、Simulink Control Design™ のコマンド linearize (Simulink Control Design) および slLinearizer (Simulink Control Design) により、SamplingGrid が自動的に入力されます。

    既定では、SamplingGrid はフィールドのない構造体です。

    オブジェクト関数

    以下のリストには、zpk モデルで使用できる関数の代表的なサブセットが含まれています。一般に、動的システム モデルに適用できるすべての関数は zpk オブジェクトに適用できます。

    すべて展開する

    step動的システムのステップ応答プロット、ステップ応答データ
    impulse動的システムのインパルス応答プロット、インパルス応答データ
    lsim動的システムの任意の入力へのシミュレーションされた時間応答をプロットする。シミュレーションされた応答データ
    bode周波数応答、またはゲインと位相データのボード線図
    nyquist周波数応答のナイキスト線図
    nichols周波数応答のニコルス線図
    bandwidth周波数応答帯域幅
    pole動的システムの極
    zeroSISO 動的システムの零点とゲイン
    pzplotプロットのカスタマイズ オプションを使用した動的システム モデルの極-零点プロット
    marginGain margin, phase margin, and crossover frequencies
    tf伝達関数モデル
    ss状態空間モデル
    c2d連続時間から離散時間へモデルを変換
    d2c離散時間から連続時間へモデルを変換
    d2d離散時間モデルのリサンプリング
    feedback複数のモデルのフィードバック接続
    connect動的システムのブロック線図相互接続
    series2 つのモデルの直列接続
    parallel2 つのモデルの並列接続
    pidtune線形プラント モデルのための PID 調整アルゴリズム
    rlocus動的システムの根軌跡プロット
    lqr線形 2 次レギュレーター (LQG) 設計
    lqg線形 2 次ガウシアン (LQG) 設計
    lqi線形 2 次積分制御
    kalmanカルマン フィルター設計、カルマン推定器

    すべて折りたたむ

    この例では、次の連続時間 SISO 零点-極-ゲイン モデルについて考えます。

    sys(s)=-2s(s-1-i)(s-1+i)(s-2)Continuous-time zero-pole-gain model

    零点、極、およびゲインを指定し、SISO 零点-極-ゲイン モデルを作成します。

    zeros = 0;
    poles = [1-1i 1+1i 2];
    gain = -2;
    sys = zpk(zeros,poles,gain)
    sys =
     
              -2 s
      --------------------
      (s-2) (s^2 - 2s + 2)
     
    Continuous-time zero/pole/gain model.
    

    この例では、サンプル時間 0.1 秒の次の SISO 離散時間零点-極-ゲイン モデルについて考えます。

    sys(s)=7(z-1)(z-2)(z-3)(z-6)(z-5)(z-4)Discrete-time SISO zero-pole-gain model

    零点、極、ゲインおよびサンプル時間を指定し、離散時間 SISO 零点-極-ゲイン モデルを作成します。

    zeros = [1 2 3];
    poles = [6 5 4];
    gain = 7;
    ts = 0.1;
    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      7 (z-1) (z-2) (z-3)
      -------------------
       (z-6) (z-5) (z-4)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    この例では、SISO 零点-極-ゲイン モデルを連結して MIMO 零点-極-ゲイン モデルを作成します。次の単入力、2 出力の連続時間零点-極-ゲイン モデルについて考えます。

    sys(s)=[(s-1)(s+1)(s+2)(s+2+i)(s+2-i)].

    SISO エントリを連結して MIMO 零点-極-ゲイン モデルを指定します。

    zeros1 = 1;
    poles1 = -1;
    gain = 1;
    sys1 = zpk(zeros1,poles1,gain)
    sys1 =
     
      (s-1)
      -----
      (s+1)
     
    Continuous-time zero/pole/gain model.
    
    zeros2 = -2;
    poles2 = [-2+1i -2-1i];
    sys2 = zpk(zeros2,poles2,gain)
    sys2 =
     
          (s+2)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    
    sys = [sys1;sys2]
    sys =
     
      From input to output...
           (s-1)
       1:  -----
           (s+1)
     
               (s+2)
       2:  --------------
           (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

    次の離散時間、多入力、多出力モデルの零点-極-ゲイン モデルを作成します。

    sys(z)=[1(z+0.3)z(z+0.3)-(z-2)(z+0.3)3(z+0.3)]Discrete-time MIMO zero-pole-gain model

    サンプル時間は ts = 0.2 秒です。

    零点と極を cell 配列およびゲインを配列として指定します。

    zeros = {[] 0;2 []};
    poles = {-0.3 -0.3;-0.3 -0.3};
    gain = [1 1;-1 3];
    ts = 0.2;

    離散時間 MIMO 零点-極-ゲイン モデルを作成します。

    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      From input 1 to output...
              1
       1:  -------
           (z+0.3)
     
           - (z-2)
       2:  -------
           (z+0.3)
     
      From input 2 to output...
              z
       1:  -------
           (z+0.3)
     
              3
       2:  -------
           (z+0.3)
     
    Sample time: 0.2 seconds
    Discrete-time zero/pole/gain model.
    

    サンプル時間と共に零点、極、ゲインを指定して、零点-極-ゲイン モデルを作成し、名前と値のペアを使用して状態と入力名を指定します。

    zeros = 4;
    poles = [-1+2i -1-2i];
    gain = 3;
    ts = 0.05;
    sys = zpk(zeros,poles,gain,ts,'InputName','Force')
    sys =
     
      From input "Force" to output:
         3 (z-4)
      --------------
      (z^2 + 2z + 5)
     
    Sample time: 0.05 seconds
    Discrete-time zero/pole/gain model.
    

    入力名の数は、零点の数と一致しなければなりません。

    入力と出力に名前を付けるのは、MIMO システムで応答プロットを扱うときに有用である可能性があります。

    step(sys)

    Figure contains an axes. The axes with title From: Force To: Out(1) contains an object of type line. This object represents sys.

    ステップ応答プロットのタイトルの入力名 Force に注目してください。

    この例では、有理式を使用して連続時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。

    以下のシステムを考えます。

    sys(s)=ss2+2s+10.

    伝達関数モデルを作成するには、まず szpk オブジェクトとして指定します。

    s = zpk('s')
    s =
     
      s
     
    Continuous-time zero/pole/gain model.
    

    有理式で s を使用して零点-極-ゲイン モデルを作成します。

    sys = s/(s^2 + 2*s + 10)
    sys =
     
             s
      ---------------
      (s^2 + 2s + 10)
     
    Continuous-time zero/pole/gain model.
    

    この例では、有理式を使用して離散時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。

    以下のシステムを考えます。

    sys(z)=z-1z2-1.85z+0.9.Discrete-time zero-pole-gain model

    零点-極-ゲインモデルを作成するには、まず zzpk オブジェクトとして指定し、サンプル時間 ts を指定します。

    ts = 0.1;
    z = zpk('z',ts)
    z =
     
      z
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    有理式で z を使用して零点-極-ゲイン モデルを作成します。

    sys = (z - 1) / (z^2 - 1.85*z + 0.9)
    sys =
     
             (z-1)
      -------------------
      (z^2 - 1.85z + 0.9)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    この例では、別の零点-極-ゲイン モデルから継承されたプロパティをもつ零点-極-ゲイン モデルを作成します。次の 2 つの零点-極-ゲイン モデルについて考えます。

    sys1(s)=2ss(s+8)andsys2(s)=0.8(s-1)(s+3)(s-5).Two zero-pole-gain models with inherited properties

    この例では、TimeUnit プロパティと InputDelay プロパティを 'minutes' に設定して sys1 を作成します。

    zero1 = 0;
    pole1 = [0;-8];
    gain1 = 2;
    sys1 = zpk(zero1,pole1,gain1,'TimeUnit','minutes','InputUnit','minutes')
    sys1 =
     
        2 s
      -------
      s (s+8)
     
    Continuous-time zero/pole/gain model.
    
    propValues1 = [sys1.TimeUnit,sys1.InputUnit]
    propValues1 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    sys1 から継承されたプロパティをもつ 2 つ目の零点-極-ゲイン モデルを作成します。

    zero = 1;
    pole = [-3,5];
    gain2 = 0.8;
    sys2 = zpk(zero,pole,gain2,sys1)
    sys2 =
     
       0.8 (s-1)
      -----------
      (s+3) (s-5)
     
    Continuous-time zero/pole/gain model.
    
    propValues2 = [sys2.TimeUnit,sys2.InputUnit]
    propValues2 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    零点-極-ゲイン モデル sys2sys1 と同じプロパティをもつことを確認してください。

    次の 2 入力、2 出力の静的ゲイン行列 m について考えます。

    m=[2435]MIMO static gain matrix

    ゲイン行列を指定して静的ゲイン零点-極-ゲインを作成します。

    m = [2,4;...
        3,5];
    sys1 = zpk(m)
    sys1 =
     
      From input 1 to output...
       1:  2
     
       2:  3
     
      From input 2 to output...
       1:  4
     
       2:  5
     
    Static gain.
    

    上記で取得した静的ゲイン零点-極-ゲイン モデル sys1 を使用して、そのモデルを別の零点-極-ゲイン モデルとカスケードさせることができます。

    sys2 = zpk(0,[-1 7],1)
    sys2 =
     
           s
      -----------
      (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    
    sys = series(sys1,sys2)
    sys =
     
      From input 1 to output...
               2 s
       1:  -----------
           (s+1) (s-7)
     
               3 s
       2:  -----------
           (s+1) (s-7)
     
      From input 2 to output...
               4 s
       1:  -----------
           (s+1) (s-7)
     
               5 s
       2:  -----------
           (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    

    この例では、次の状態空間モデルの零点-極-ゲイン モデルを計算します。

    A=[-2-11-2],B=[112-1],C=[10],D=[01].State-space matrices

    状態空間行列を使用して状態空間モデルを作成します。

    A = [-2 -1;1 -2];
    B = [1 1;2 -1];
    C = [1 0];
    D = [0 1];
    ltiSys = ss(A,B,C,D);

    状態空間モデル ltiSys を零点-極-ゲイン モデルに変換します。

    sys = zpk(ltiSys)
    sys =
     
      From input 1 to output:
            s
      --------------
      (s^2 + 4s + 5)
     
      From input 2 to output:
      (s^2 + 5s + 8)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

    for ループを使用して零点-極-ゲイン モデルの配列を指定できます。

    最初に、零点-極-ゲイン モデル配列にゼロを事前に割り当てます。

    sys = zpk(zeros(1,1,3));

    最初の 2 つのインデックスはモデルの出力と入力の数を表し、3 つ目のインデックスは配列内のモデルの数を表します。

    for ループで有理式を使用して零点-極-ゲイン モデルの配列を作成します。

    s = zpk('s');                                                  
    for k = 1:3                                                             
        sys(:,:,k) = k/(s^2+s+k);                                          
    end
    sys
    sys(:,:,1,1) =
     
            1
      -------------
      (s^2 + s + 1)
     
    
    sys(:,:,2,1) =
     
            2
      -------------
      (s^2 + s + 2)
     
    
    sys(:,:,3,1) =
     
            3
      -------------
      (s^2 + s + 3)
     
    3x1 array of continuous-time zero/pole/gain models.
    

    この例では、同定された多項式モデルの測定成分とノイズ成分を 2 つの別々の零点-極-ゲイン モデルに抽出します。

    identifiedModel.mat の Box-Jenkins 多項式モデル ltiSys を読み込みます。

    load('identifiedModel.mat','ltiSys');

    ltiSys は同定された y(t)=BFu(t)+CDe(t) 形式の離散時間モデルで、BF は測定成分、CD はノイズ成分を表します。

    測定成分とノイズ成分を零点-極-ゲイン モデルとして抽出します。

    sysMeas = zpk(ltiSys,'measured') 
    sysMeas =
     
      From input "u1" to output "y1":
                -0.14256 z^-1 (1-1.374z^-1)
      z^(-2) * -----------------------------
               (1-0.8789z^-1) (1-0.6958z^-1)
     
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    
    sysNoise = zpk(ltiSys,'noise')
    sysNoise =
     
      From input "v@y1" to output "y1":
                0.045563 (1+0.7245z^-1)
      --------------------------------------------
      (1-0.9658z^-1) (1 - 0.0602z^-1 + 0.2018z^-2)
     
    Input groups:        
        Name     Channels
        Noise       1    
                         
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    

    測定成分はプラント モデルとすることができ、ノイズ成分は制御システム設計の外乱モデルとして使用できます。

    この例では、入力遅延 0.5 秒および出力遅延 2.5 秒の SISO 零点-極-ゲイン モデルを作成します。

    zeros = 5;
    poles = [7+1i 7-1i -3];
    gains = 1;
    sys = zpk(zeros,poles,gains,'InputDelay',0.5,'OutputDelay',2.5)
    sys =
     
                          (s-5)
      exp(-3*s) * ----------------------
                  (s+3) (s^2 - 14s + 50)
     
    Continuous-time zero/pole/gain model.
    

    get コマンドを使用して MATLAB オブジェクトのすべてのプロパティを表示することもできます。

    get(sys)
                    Z: {[5]}
                    P: {[3x1 double]}
                    K: 1
        DisplayFormat: 'roots'
             Variable: 's'
              IODelay: 0
           InputDelay: 0.5000
          OutputDelay: 2.5000
                   Ts: 0
             TimeUnit: 'seconds'
            InputName: {''}
            InputUnit: {''}
           InputGroup: [1x1 struct]
           OutputName: {''}
           OutputUnit: {''}
          OutputGroup: [1x1 struct]
                Notes: [0x1 string]
             UserData: []
                 Name: ''
         SamplingGrid: [1x1 struct]
    

    LTI モデルのむだ時間の指定の詳細については、むだ時間の指定を参照してください。

    この例では、次の零点-極-ゲイン モデルで表されるシステムについて、0.75 rad/s のターゲット帯域幅をもつ 2-DOF PID コントローラーを設計します。

    sys(s)=1s2+0.5s+0.1Zero-pole-gain model

    zpk コマンドを使用して零点-極-ゲイン モデル オブジェクト sys を作成します。

    zeros = [];
    poles = [-0.25+0.2i;-0.25-0.2i];
    gain = 1;
    sys = zpk(zeros,poles,gain)
    sys =
     
                1
      ---------------------
      (s^2 + 0.5s + 0.1025)
     
    Continuous-time zero/pole/gain model.
    

    ターゲット帯域幅を使用し、pidtuneを使用して 2-DOF コントローラーを生成します。

    wc = 0.75;
    C2 = pidtune(sys,'PID2',wc)
    C2 =
     
                           1              
      u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                           s              
    
      with Kp = 0.512, Ki = 0.0975, Kd = 0.574, b = 0.38, c = 0
     
    Continuous-time 2-DOF PID controller in parallel form.
    

    タイプ 'PID2' を使用すると、pidtune により 2-DOF コントローラーが生成され、pid2 オブジェクトとして表現されます。表示によりこの結果を確認します。表示にはまた、pidtune がすべてのコントローラー係数を、設定点の重み b および c を含めて調整し、性能とロバスト性のバランスを取っていることも示されます。

    ライブ エディターによる対話型の PID 調整については、PID コントローラーの調整ライブ エディター タスクを参照してください。このタスクを使用すると、PID コントローラーを対話的に設計し、ライブ スクリプト用の MATLAB コードを自動的に生成できます。

    スタンドアロン アプリによる対話型の PID 調整には、PID 調整器を使用します。アプリを使用したコントローラーの設計の例については、高速設定値追従用の PID コントローラーの設計を参照してください。

    アルゴリズム

    zpk は、MATLAB 関数 roots を使用して伝達関数を変換し、関数 zeropole を使用して状態空間モデルを変換します。

    R2006a より前に導入