このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
zpk
零点-極-ゲイン モデル
説明
zpk
を使用して零点-極-ゲイン モデルを作成するか、動的システム モデルを零点-極-ゲイン形式に変換します。
零点-極-ゲイン モデルは、因数分解した形式で伝達関数を表したものです。たとえば、次の連続時間 SISO 伝達関数について考えてます。
G(s)
は、次のように零点-極-ゲイン形式に因数分解できます。
SISO 零点-極-ゲイン モデルのより一般的な表現は次のとおりです。
ここで、z と p は実数値または複素数値の零点と極で、k は実数値または複素数値のスカラー ゲインです。MIMO モデルでは、各 I/O チャネルは 1 つのそのような伝達関数 hij(s) によって表されます。
零点-極-ゲイン モデル オブジェクトを作成するには、極、零点およびゲインを直接指定するか、(状態空間モデル ss
などの) 別のタイプのモデルを零点-極-ゲイン形式に変換することができます。
zpk
を使用して、一般化状態空間 (genss
) モデルや不確かさをもつ状態空間 (uss
(Robust Control Toolbox)) モデルを作成することもできます。
作成
構文
説明
ZPK モデルの作成
ZPK モデルへの変換
は、1 つ以上の指定された名前と値の引数に基づいて零点と極を計算することで、スパース モデル sys
= zpk(ltiSys
,Name=Value
)ltiSys
の打ち切られた zpk
表現を取得します。この手法では、入力と出力の各ペアに対して零点を計算するため、入力と出力のサイズが小さいモデルに最適です。 (R2025a 以降)
入力引数
零点-極-ゲイン モデルの零点。次のように指定します。
SISO モデルの行ベクトル。たとえば、
[1,2+i,2-i]
を使用して、s = 1
、s = 2+i
、およびs = 2-i
の零点をもつモデルを作成します。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。行ベクトルからなる
Ny
行Nu
列の cell 配列。これは MIMO 零点-極-ゲイン モデルを指定し、Ny
は出力の数、Nu
は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。
たとえば、a
が、ノミナル値 3
の realp
調整可能パラメーターである場合、zeros = [1 2 a]
を使用して、s = 1
と s = 2
の零点および s = 3
の調整可能な零点をもつ genss
モデルを作成できます。
この入力引数を使用して zpk
モデルを作成すると、引数によってプロパティ Z の初期値が設定されます。
零点-極-ゲイン モデルの極。次のように指定します。
SISO モデルの行ベクトル。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。
行ベクトルからなる
Ny
行Nu
列の cell 配列。これは MIMO 零点-極-ゲイン モデルを指定し、Ny
は出力の数、Nu
は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。
zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ P の初期値を設定します。
零点-極-ゲイン モデルのゲイン。次のように指定します。
SISO モデルのスカラー。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。
MIMO 零点-極-ゲイン モデルを指定する
Ny
行Nu
列の行列。ここで、Ny
は出力の数、Nu
は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。
zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ K の初期値を設定します。
スカラーとして指定されたサンプル時間。zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ Ts の初期値を設定します。
動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。
tf
モデル、zpk
モデル、ss
モデル、またはpid
モデルなどの連続時間または離散時間の数値 LTI モデル。ltiSys
がスパース状態空間モデル (sparss
またはmechss
) の場合、ソフトウェアは指定した焦点の周波数帯域内における打ち切られた零点-極-ゲインの近似を計算します。スパース モデルの場合は、名前と値の引数を使用して計算オプションを指定します。オプションを指定しなかった場合、ソフトウェアは最小の振幅をもつ最初の 1000 個までの極と零点を計算します。また、打ち切られた零点-極-ゲインの近似の取得は、有効なsparss
表現をもつモデルにのみ適用可能です。 (R2025a 以降)genss
やuss
(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
モデル オブジェクトに変換できません。最初に、linearize
やlinapp
などの線形近似関数を使用できます (この機能には、System Identification Toolbox ソフトウェアが必要です)。
静的ゲイン。スカラーまたは行列として指定します。システムの静的ゲインまたは定常状態ゲインは、定常状態の条件下における出力の入力に対する比率を表します。
同定されたモデルの変換対象とするコンポーネント。次のいずれかとして指定します。
'measured'
—sys
の測定成分を変換します。'noise'
—sys
のノイズ成分を変換します。'augmented'
—sys
の測定成分とノイズ成分の両方を変換します。
component
が適用されるのは、sys
が同定された LTI モデルである場合のみです。
同定された LTI モデルおよびその測定成分とノイズ成分の詳細については、同定された LTI モデルを参照してください。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: sys = zpk(sparseSys,Focus=[0 100],Display="off")
R2025a 以降
零点と極の計算時に並列計算を使用するかどうか。数値または logical 0
(false
) または 1
(true
) として指定します。
UseParallel
が true
に設定されている場合、望ましい並列環境に合わせてスケーリングすることを明示的に選択できます。並列計算を有効にすると、零点と極の計算時のパフォーマンスが向上する可能性があります。ただし、UseParallel
が false
に設定されている場合でも、アルゴリズムは組み込みのマルチスレッディングを使用してローカル リソースを最大限に活用できます。詳細については、MATLAB Multicore を参照してください。
このオプションには、Parallel Computing Toolbox™ ライセンスが必要です。
R2025a 以降
ロールオフの傾き。非正のスカラーまたは行列として指定します。
SISO モデルの場合、または MIMO モデルで入力と出力のすべてのペアに対して傾きが均一な場合には、スカラー値を使用します。
MIMO モデルで入力と出力のペアごとに傾きが異なる場合は、行列を使用します。
このオプションを使用すると、指定された周波数範囲を超えたときに近似がどのようにロールオフする必要があるかを指定できます。たとえば、Slope
を -2
にすると、fmax
を超えたときにゲインが少なくとも –40 dB/decade のレート (ロールオフ率 1/s2) でロールオフすることが保証されます。
R2025a 以降
対象の周波数範囲。[0,fmax]
の形式のベクトルとして指定します。焦点の周波数範囲を指定すると、ソフトウェアはこの範囲内の固有振動数をもつ極のみを計算します。離散時間モデルの場合、ソフトウェアは双一次変換を使用して同等の固有振動数を近似します。
zpk
は指定した周波数範囲内のすべての極と零点を計算するため、通常は低周波数範囲を指定して多数の極と零点を計算しないように制限します。既定では、焦点は未指定 ([0 Inf]
) であり、アルゴリズムは MaxNumber
個までの極と零点を計算します。
R2025a 以降
計算する極と零点の最大数。正の整数として指定します。この値により、アルゴリズムによって計算される極および零点の数と、元のスパース モデルの近似の次数が制限されます。
R2025a 以降
スペクトル シフト。有限スカラーとして指定します。
ソフトウェアは A-sigma*E
に逆べき乗法を使用して、指定した範囲 [0,fmax]
内の固有振動数をもつ極を計算し、シフト sigma
に最も近い固有値を取得します。A
が特異で、sigma
がゼロの場合、逆が存在しないためアルゴリズムは失敗します。したがって、積分動作をもつスパース モデル (s = 0 または z = 1 (離散時間モデルの場合)) では、このオプションを使用して、極または零点をこのシフト値に最も近い値に暗黙的にシフトできます。元のモデルの既存の極または零点の値と等しくないシフト値を指定します。
R2025a 以降
計算された極と零点の精度の許容誤差。正の有限スカラーとして指定します。この値は、逆べき乗法における計算された固有値の収束を制御します。
R2025a 以降
進捗レポートの表示または非表示。"off"
または "on"
として指定します。
出力引数
出力システム モデル。以下として返されます。
入力引数
zeros
、poles
およびgain
に数値が含まれる場合は、零点-極-ゲイン (zpk
) モデル オブジェクト。ltiSys
をzpk
モデル タイプに変換する場合、sys
は常にzpk
モデル オブジェクトになります。入力引数
zeros
、poles
またはgain
にrealp
パラメーターや一般化行列 (genmat
) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss
) オブジェクト。入力引数
zeros
、poles
またはgain
に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss
) オブジェクト(不確かさをもつモデルを使用するには Robust Control Toolbox のライセンスが必要です)。
プロパティ
システムの零点。次のように指定します。
伝達関数零点の cell 配列または SISO モデルの分子の根。
MIMO モデルの各 I/O ペアに対する零点の行ベクトルからなる
Ny
行Nu
列の cell 配列。ここで、Ny
は出力数およびNu
は入力数です。
Z
の値は実数値または複素数値にできます。
システムの極。次のように指定します。
SISO モデルの場合は伝達関数零点の cell 配列または分母の根。
MIMO モデルの各 I/O ペアの場合は極の行ベクトルからなる
Ny
行Nu
列の cell 配列。ここで、Ny
は出力数およびNu
は入力数です。
P
の値は実数値または複素数値にできます。
システム ゲイン。次のように指定します。
SISO モデルの場合はスカラー値。
MIMO モデルの各 I/O ペアの場合はゲイン値を格納する
Ny
行Nu
列の行列。ここで、Ny
は出力数およびNu
は入力数です。
K
の値は実数値または複素数値にできます。
分子と分母の多項式を表示するために因数分解する方法。次のいずれか 1 つとして指定します。
'roots'
— 多項式の根の位置に関する係数を表示します。'roots'
はDisplayFormat
の既定値です。'frequency'
— 根の固有振動数 ω0 と減衰比 ζ に関する係数を表示します。'frequency'
表示形式は、Variable
の値'z^-1'
または'q^-1'
をもつ離散時間モデルには使用できません。'time constant'
— 根の時定数 τ と減衰比 ζ に関する係数を表示します。'time constant'
表示形式は、Variable
の値'z^-1'
または'q^-1'
をもつ離散時間モデルには使用できません。
連続時間モデルの場合、以下の表は多項式の係数が各表示形式でどのように配置されるかを示します。
DisplayName 値 | 1 次係数 (実根 ) | 2 次係数 (複素根ペア ) |
---|---|---|
'roots' | ここで、 | |
'frequency' | ここで、 | ここで、 |
'time constant' | ここで、 | ここで、 |
離散時間モデルの場合、多項式の係数は以下の変数の代入により連続時間モデルと同様に配置されます。
ここで、Ts はサンプル時間です。離散時間では、τ と ω0 は、等価な連続時間根の時定数と固有振動数と厳密に一致します。ただし、次の条件が満たされていることが必要です。
零点-極-ゲイン モデルの表示変数。以下のいずれかとして指定します。
's'
— 連続時間モデルの場合の既定値'z'
— 離散時間モデルの既定値'p'
—'s'
と等価'q'
—'z'
と等価'z^-1'
—'z'
の逆'q^-1'
—'z^-1'
と等価
伝達遅延。次のいずれかとして指定します。
スカラー — SISO システムに伝達遅延を、または MIMO システムのすべての入出力ペアに対して同じ伝達遅延を指定します。
Ny
行Nu
列の配列 — MIMO システムの入出力ペアごとに別々の伝達遅延を指定します。ここで、Ny
は出力の数、Nu
は入力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で伝達遅延を指定します。離散時間システムの場合、サンプル時間 Ts
の整数倍で伝達遅延を指定します。むだ時間の詳細については、線形システムでのむだ時間を参照してください。
各入力チャネルの入力遅延。次のいずれかとして指定します。
スカラー — SISO システムに入力遅延を、または多入力システムのすべての入力に同じ遅延を指定します。
Nu
行 1 列のベクトル — 多入力システムの入力に別々の入力遅延を指定します。Nu
は入力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で入力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で入力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
各出力チャネルの出力遅延。次のいずれかとして指定します。
スカラー — SISO システムに出力遅延を、または多出力システムのすべての出力に同じ遅延を指定します。
Ny
行 1 列のベクトル — 多出力システムの出力に別々の出力遅延を指定します。Ny
は出力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で出力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で出力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
時間変数の単位。次のいずれかとして指定します。
'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.u
は sys.InputName
と同じです。
InputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
入力チャネル単位。以下のいずれかとして指定します。
文字ベクトル (単入力モデルの場合)。
文字ベクトルの cell 配列 (多入力モデルの場合)。
''
(いずれの入力チャネルにも単位を指定しない場合)。
InputUnit
を使用して入力信号の単位を指定します。InputUnit
はシステムの動作に影響しません。
入力チャネル グループ。構造体として指定します。InputGroup
プロパティを使用して、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照します。InputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの入力チャネルです。たとえば、入力チャネル 1
と 2
、および 3
と 5
をそれぞれ含む、controls
および noise
という名前の入力グループを作成するには、次のように入力します。
sys.InputGroup.controls = [1 2]; sys.InputGroup.noise = [3 5];
その後、以下を使用して controls
入力からすべての出力にサブシステムを抽出できます。
sys(:,'controls')
既定では、InputGroup
はフィールドのない構造体です。
出力チャネル名。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも名前を指定しない場合)。
あるいは、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てることもできます。たとえば、sys
が 2 出力モデルである場合は、以下のように入力します。
sys.OutputName = 'measurements';
出力名は自動的に {'measurements(1)';'measurements(2)'}
へと拡張されます。
省略形表記 y
を使用して OutputName
プロパティを参照することもできます。たとえば、sys.y
は sys.OutputName
と同じです。
OutputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
出力チャネル単位。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも単位を指定しない場合)。
OutputUnit
を使用して出力信号の単位を指定します。OutputUnit
はシステムの動作に影響しません。
出力チャネル グループ。構造体として指定します。OutputGroup
を使用して、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照します。OutputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの出力チャネルです。たとえば、出力チャネル 1
、および 3
と 5
をそれぞれ含む、temperature
および measurement
という名前の出力グループを作成します。
sys.OutputGroup.temperature = [1]; sys.OutputGroup.measurement = [3 5];
その後、以下を使用してすべての入力から 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 つの変数 zeta
と w
を個別にサンプリングすることにより、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
を表示する際、配列の各エントリは対応する zeta
と w
の値を取り込みます。
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
はフィールドのない構造体です。
例
この例では、次の連続時間 SISO 零点-極-ゲイン モデルについて考えます。
零点、極、およびゲインを指定し、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. Model Properties
この例では、サンプル時間 0.1 秒の次の SISO 離散時間零点-極-ゲイン モデルについて考えます。
零点、極、ゲインおよびサンプル時間を指定し、離散時間 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. Model Properties
この例では、SISO 零点-極-ゲイン モデルを連結して MIMO 零点-極-ゲイン モデルを作成します。次の単入力、2 出力の連続時間零点-極-ゲイン モデルについて考えます。
SISO エントリを連結して MIMO 零点-極-ゲイン モデルを指定します。
zeros1 = 1; poles1 = -1; gain = 1; sys1 = zpk(zeros1,poles1,gain)
sys1 = (s-1) ----- (s+1) Continuous-time zero/pole/gain model. Model Properties
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. Model Properties
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. Model Properties
次の離散時間、多入力、多出力モデルの零点-極-ゲイン モデルを作成します。
サンプル時間は 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. Model Properties
サンプル時間と共に零点、極、ゲインを指定して、零点-極-ゲイン モデルを作成し、名前と値のペアを使用して状態と入力名を指定します。
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. Model Properties
入力名の数は、零点の数と一致しなければなりません。
入力と出力に名前を付けるのは、MIMO システムで応答プロットを扱うときに有用である可能性があります。
step(sys)
ステップ応答プロットのタイトルの入力名 Force
に注目してください。
この例では、有理式を使用して連続時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。
以下のシステムを考えます。
伝達関数モデルを作成するには、まず s
を zpk
オブジェクトとして指定します。
s = zpk('s')
s = s Continuous-time zero/pole/gain model. Model Properties
有理式で s を使用して零点-極-ゲイン モデルを作成します。
sys = s/(s^2 + 2*s + 10)
sys = s --------------- (s^2 + 2s + 10) Continuous-time zero/pole/gain model. Model Properties
この例では、有理式を使用して離散時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。
以下のシステムを考えます。
零点-極-ゲインモデルを作成するには、まず z
を zpk
オブジェクトとして指定し、サンプル時間 ts
を指定します。
ts = 0.1;
z = zpk('z',ts)
z = z Sample time: 0.1 seconds Discrete-time zero/pole/gain model. Model Properties
有理式で 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. Model Properties
この例では、別の零点-極-ゲイン モデルから継承されたプロパティをもつ零点-極-ゲイン モデルを作成します。次の 2 つの零点-極-ゲイン モデルについて考えます。
この例では、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. Model Properties
propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1×2 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. Model Properties
propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1×2 cell
{'minutes'} {'minutes'}
零点-極-ゲイン モデル sys2
が sys1
と同じプロパティをもつことを確認してください。
次の 2 入力、2 出力の静的ゲイン行列 m
について考えます。
ゲイン行列を指定して静的ゲイン零点-極-ゲインを作成します。
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. Model Properties
上記で取得した静的ゲイン零点-極-ゲイン モデル sys1
を使用して、そのモデルを別の零点-極-ゲイン モデルとカスケードさせることができます。
sys2 = zpk(0,[-1 7],1)
sys2 = s ----------- (s+1) (s-7) Continuous-time zero/pole/gain model. Model Properties
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. Model Properties
この例では、次の状態空間モデルの零点-極-ゲイン モデルを計算します。
状態空間行列を使用して状態空間モデルを作成します。
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. Model Properties
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. Model Properties
この例では、同定された多項式モデルの測定成分とノイズ成分を 2 つの別々の零点-極-ゲイン モデルに抽出します。
identifiedModel.mat
の Box-Jenkins 多項式モデル ltiSys
を読み込みます。
load('identifiedModel.mat','ltiSys');
ltiSys
は同定された 形式の離散時間モデルで、 は測定成分、 はノイズ成分を表します。
測定成分とノイズ成分を零点-極-ゲイン モデルとして抽出します。
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. Model Properties
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. Model Properties
測定成分はプラント モデルとすることができ、ノイズ成分は制御システム設計の外乱モデルとして使用できます。
この例では、入力遅延 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. Model Properties
get
コマンドを使用して MATLAB オブジェクトのすべてのプロパティを表示することもできます。
get(sys)
Z: {[5]} P: {[3×1 double]} K: 1 DisplayFormat: 'roots' Variable: 's' IODelay: 0 InputDelay: 0.5000 OutputDelay: 2.5000 InputName: {''} InputUnit: {''} InputGroup: [1×1 struct] OutputName: {''} OutputUnit: {''} OutputGroup: [1×1 struct] Notes: [0×1 string] UserData: [] Name: '' Ts: 0 TimeUnit: 'seconds' SamplingGrid: [1×1 struct]
LTI モデルのむだ時間の指定の詳細については、むだ時間の指定を参照してください。
この例では、次の零点-極-ゲイン モデルで表されるシステムについて、0.75 rad/s のターゲット帯域幅をもつ 2-DOF PID コントローラーを設計します。
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. Model Properties
ターゲット帯域幅を使用し、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. Model Properties
タイプ 'PID2'
を使用すると、pidtune
により 2-DOF コントローラーが生成され、pid2
オブジェクトとして表現されます。表示によりこの結果を確認します。表示にはまた、pidtune
がすべてのコントローラー係数を、設定点の重み b
および c
を含めて調整し、性能とロバスト性のバランスを取っていることも示されます。
ライブ エディターによる対話型の PID 調整については、PID コントローラーの調整ライブ エディター タスクを参照してください。このタスクを使用すると、PID コントローラーを対話的に設計し、ライブ スクリプト用の MATLAB コードを自動的に生成できます。
スタンドアロン アプリによる対話型の PID 調整には、PID 調整器を使用します。アプリを使用したコントローラーの設計の例については、高速設定値追従用の PID コントローラーの設計を参照してください。
R2025a 以降
この例では、スパース状態空間モデルの打ち切られた零点-極-ゲイン モデルを取得する方法を示します。この例では、円柱ロッドの熱分布の熱モデルを線形化することで得られるスパース モデルを使用します。
モデル データを読み込みます。
load cylindricalRod.mat
sys = sparss(A,B,C,D,E);
w = logspace(-7,-1,20);
size(sys)
Sparse state-space model with 3 outputs, 1 inputs, and 7522 states.
モデルの周波数応答を解析します。
sigmaplot(sys,w)
打ち切られた近似を得るには、zpk
を使用して、焦点の周波数帯域を指定します。このモデルでは、0 rad/s ~ 0.01 rad/s までの周波数範囲を使用することで、低次の近似が得られます。
zsys = zpk(sys,Focus=[0 1e-2],Display="off");
周波数応答を比較します。
sigmaplot(sys,zsys,w)
この熱モデルでは、0.001 rad/s を超えると急勾配のロールオフが生じています。既定では、zpk
を使用して得られた低次元化モデルは、このロールオフに適切に一致しません。これを軽減するために、zpk
の RollOff
引数を使用して、焦点の周波数帯域を超えたときの最小ロールオフ値を指定できます。ロールオフの傾きの値として -45
を指定します。これは、–900 db/decade 以上のレートに相当します。
zsys2 = zpk(sys,Focus=[0 1e-2],RollOff=-45,Display="off");
sigmaplot(sys,zsys2,w)
低次元化されたモデルで、ロールオフ値の近似が大幅に改善されました。ただし、この例では、zpk
を使用してロールオフの傾きを再調整するには、零点と極を再計算する必要があります。そのため、大規模モデルの場合、計算コストが高くなる可能性があります。代わりに、reducespec
の零点-極打ち切り法を使用して、ソフトウェアが極と零点を計算した後に、追加の計算コストをかけずにロールオフを調整できます。例については、Zero-Pole Truncation of Thermal Modelを参照してください。
アルゴリズム
zpk
は、MATLAB 関数 roots
を使用して伝達関数を変換し、関数 zero
と pole
を使用して状態空間モデルを変換します。
スパース モデルを変換するために、zpk
は逆べき乗法に Krylov-Schur アルゴリズム [1] を使用して、指定した周波数帯域内の極と零点を計算します。
参照
[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.
バージョン履歴
R2006a より前に導入zpk
を使用してスパース状態空間モデルを変換し、打ち切られた零点-極-ゲインの近似を取得できるようになりました。zpk
は、(通常は特定の低周波数帯域 [0 fmax] で) スパース モデルの零点と極のサブセットを計算します。これにより、計算量が増加する代わりに、モーダル打ち切りによるモデル次数の低次元化よりも優れた低周波数の近似が得られます。また、zpk
では、周波数 fmax を超えたときのロールオフの傾きを直接制御することもできます。新しい構文 zsys = zpk(sparseSys,Name=Value)
を使用して、焦点の周波数範囲などの指定したオプションに基づいて近似を得ます。例については、スパース モデルの打ち切られた ZPK の近似の計算を参照してください。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)