零点-極-ゲイン モデル
このページをすべて展開する
説明
zpk
を使用して零点-極-ゲイン モデルを作成するか、動的システム モデルを零点-極-ゲイン形式に変換します。
零点-極-ゲイン モデルは、因数分解した形式で伝達関数を表したものです。たとえば、次の連続時間 SISO 伝達関数について考えてます。
G(s)
は、次のように零点-極-ゲイン形式に因数分解できます。
SISO 零点-極-ゲイン モデルのより一般的な表現は次のとおりです。
ここで、z と p は実数値または複素数値の零点と極で、k は実数値または複素数値のスカラー ゲインです。MIMO モデルでは、各 I/O チャネルは 1 つのそのような伝達関数 hij(s) によって表されます。
零点-極-ゲイン モデル オブジェクトを作成するには、極、零点およびゲインを直接指定するか、(状態空間モデル ss
などの) 別のタイプのモデルを零点-極-ゲイン形式に変換することができます。
zpk
を使用して、一般化状態空間 (genss) モデルや不確かさをもつ状態空間 (uss (Robust Control Toolbox)) モデルを作成することもできます。
作成
構文
sys = zpk(zeros,poles,gain)
sys = zpk(zeros,poles,gain,ts)
sys = zpk(zeros,poles,gain,ltiSys)
sys = zpk(m)
sys = zpk(___,Name,Value)
sys = zpk(ltiSys)
sys = zpk(ltiSys,component)
s = zpk('s')
z = zpk('z',ts)
説明
例
sys = zpk(zeros,poles,gain)
は、ベクトルとして指定された zeros
と poles
および 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
に設定します。
入力引数
すべて展開する
zeros
— 零点-極-ゲイン モデルの零点
行ベクトル | 行ベクトルからなる Ny
行 Nu
列の cell 配列
零点-極-ゲイン モデルの零点。次のように指定します。
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 の初期値が設定されます。
poles
— 零点-極-ゲイン モデルの極
行ベクトル | 行ベクトルからなる Ny
行 Nu
列の cell 配列
零点-極-ゲイン モデルの極。次のように指定します。
SISO モデルの行ベクトル。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。
行ベクトルからなる
Ny
行Nu
列の cell 配列。これは MIMO 零点-極-ゲイン モデルを指定し、Ny
は出力の数、Nu
は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。
zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ P の初期値を設定します。
gain
— 零点-極-ゲイン モデルのゲイン
スカラー | Ny
行 Nu
列の行列
零点-極-ゲイン モデルのゲイン。次のように指定します。
SISO モデルのスカラー。例については、連続時間 SISO 零点-極-ゲイン モデルを参照してください。
MIMO 零点-極-ゲイン モデルを指定する
Ny
行Nu
列の行列。ここで、Ny
は出力の数、Nu
は入力の数です。例については、離散時間 MIMO 零点-極-ゲイン モデルを参照してください。
zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ K の初期値を設定します。
ts
— サンプル時間
スカラー
スカラーとして指定されたサンプル時間。zpk
オブジェクトのプロパティでもあります。この入力引数では、プロパティ Ts の初期値を設定します。
ltiSys
— 動的システム
動的システム モデル | モデル配列
動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。
tf
モデル、zpk モデル、ss モデル、または pid モデルなどの連続時間または離散時間の数値 LTI モデル。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 ソフトウェアが必要です)。
m
— 静的ゲイン
スカラー | 行列
静的ゲイン。スカラーまたは行列として指定します。システムの静的ゲインまたは定常状態ゲインは、定常状態の条件下における出力の入力に対する比率を表します。
component
— 同定されたモデルのコンポーネント
'measured'
(既定値) | 'noise'
| 'augmented'
同定されたモデルの変換対象とするコンポーネント。次のいずれかとして指定します。
'measured'
—sys
の測定成分を変換します。'noise'
—sys
のノイズ成分を変換します。'augmented'
—sys
の測定成分とノイズ成分の両方を変換します。
component
が適用されるのは、sys
が同定された LTI モデルである場合のみです。
同定された LTI モデルおよびその測定成分とノイズ成分の詳細については、同定された LTI モデルを参照してください。
出力引数
すべて展開する
sys
— 出力システム モデル
zpk
モデル オブジェクト | genss
モデル オブジェクト | uss
モデル オブジェクト
出力システム モデル。以下として返されます。
入力引数
zeros
、poles
およびgain
に数値が含まれる場合は、零点-極-ゲイン (zpk
) モデル オブジェクト。入力引数
zeros
、poles
またはgain
に realp パラメーターや一般化行列 (genmat) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss
) オブジェクト。入力引数
zeros
、poles
またはgain
に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss
) オブジェクト(不確かさをもつモデルを使用するには Robust Control Toolbox のライセンスが必要です)。
プロパティ
すべて展開する
Z
— システムの零点
cell 配列 | 行ベクトルからなる Ny
行 Nu
列の cell 配列
システムの零点。次のように指定します。
伝達関数零点の cell 配列または SISO モデルの分子の根。
MIMO モデルの各 I/O ペアに対する零点の行ベクトルからなる
Ny
行Nu
列の cell 配列。ここで、Ny
は出力数およびNu
は入力数です。
Z
の値は実数値または複素数値にできます。
P
— システムの極
cell 配列 | 行ベクトルからなる Ny
行 Nu
列の cell 配列
システムの極。次のように指定します。
SISO モデルの場合は伝達関数零点の cell 配列または分母の根。
MIMO モデルの各 I/O ペアの場合は極の行ベクトルからなる
Ny
行Nu
列の cell 配列。ここで、Ny
は出力数およびNu
は入力数です。
P
の値は実数値または複素数値にできます。
K
— システム ゲイン
スカラー | Ny
行 Nu
列の行列
システム ゲイン。次のように指定します。
SISO モデルの場合はスカラー値。
MIMO モデルの各 I/O ペアの場合はゲイン値を格納する
Ny
行Nu
列の行列。ここで、Ny
は出力数およびNu
は入力数です。
K
の値は実数値または複素数値にできます。
DisplayFormat
— 分子と分母の多項式を表示するために因数分解する方法を指定します。
'roots'
(既定値) | 'frequency'
| 'time constant'
分子と分母の多項式を表示するために因数分解する方法。次のいずれか 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 は、等価な連続時間根の時定数と固有振動数と厳密に一致します。ただし、次の条件が満たされていることが必要です。
Variable
— 零点-極-ゲイン モデルの表示変数
's'
(既定値) | 'z'
| 'p'
| 'q'
| 'z^-1'
| 'q^-1'
零点-極-ゲイン モデルの表示変数。以下のいずれかとして指定します。
's'
— 連続時間モデルの場合の既定値'z'
— 離散時間モデルの既定値'p'
—'s'
と等価'q'
—'z'
と等価'z^-1'
—'z'
の逆'q^-1'
—'z^-1'
と等価
IODelay
— 伝達遅延
0
(既定値) | スカラー | Ny
行 Nu
列の配列
伝達遅延。次のいずれかとして指定します。
スカラー — SISO システムに伝達遅延を、または MIMO システムのすべての入出力ペアに対して同じ伝達遅延を指定します。
Ny
行Nu
列の配列 — MIMO システムの入出力ペアごとに別々の伝達遅延を指定します。ここで、Ny
は出力の数、Nu
は入力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で伝達遅延を指定します。離散時間システムの場合、サンプル時間 Ts
の整数倍で伝達遅延を指定します。むだ時間の詳細については、線形システムでのむだ時間を参照してください。
InputDelay
— 入力遅延
0
(既定値) | スカラー | Nu
行 1 列のベクトル
各入力チャネルの入力遅延。次のいずれかとして指定します。
スカラー — SISO システムに入力遅延を、または多入力システムのすべての入力に同じ遅延を指定します。
Nu
行 1 列のベクトル — 多入力システムの入力に別々の入力遅延を指定します。Nu
は入力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で入力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で入力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
OutputDelay
— 出力遅延
0
(既定値) | スカラー | Ny
行 1 列のベクトル
各出力チャネルの出力遅延。次のいずれかとして指定します。
スカラー — SISO システムに出力遅延を、または多出力システムのすべての出力に同じ遅延を指定します。
Ny
行 1 列のベクトル — 多出力システムの出力に別々の出力遅延を指定します。Ny
は出力の数です。
連続時間システムの場合は、TimeUnit
プロパティによって指定された時間単位で出力遅延を指定します。離散時間システムの場合は、サンプル時間 Ts
の整数倍で出力遅延を指定します。
詳細については、線形システムでのむだ時間を参照してください。
Ts
— サンプル時間
0
(既定値) | 正のスカラー | -1
サンプル時間。以下として指定します。
0
(連続時間システムの場合)。離散時間システムのサンプリング周期を表す正のスカラー。
Ts
はTimeUnit
プロパティによって指定される時間単位で指定します。-1
(サンプル時間が指定されていない離散時間システムの場合)。
メモ
Ts
を変更してもモデルの離散化やリサンプリングは行われません。連続時間表現と離散時間表現の間の変換を行うには、c2d と d2c を使用します。離散時間システムのサンプル時間を変更するには、d2d を使用します。
TimeUnit
— 時間変数の単位
'seconds'
(既定値) | 'nanoseconds'
| 'microseconds'
| 'milliseconds'
| 'minutes'
| 'hours'
| 'days'
| 'weeks'
| 'months'
| 'years'
| ...
時間変数の単位。次のいずれかとして指定します。
'nanoseconds'
'microseconds'
'milliseconds'
'seconds'
'minutes'
'hours'
'days'
'weeks'
'months'
'years'
TimeUnit
の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。
InputName
— 入力チャネル名
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
入力チャネル名。以下のいずれかとして指定します。
文字ベクトル (単入力モデルの場合)。
文字ベクトルの cell 配列 (多入力モデルの場合)。
''
(いずれの入力チャネルにも名前を指定しない場合)。
あるいは、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てることもできます。たとえば、sys
が 2 入力モデルである場合は、以下のように入力します。
sys.InputName = 'controls';
入力名は自動的に {'controls(1)';'controls(2)'}
へと拡張されます。
省略形表記 u
を使用して、InputName
プロパティを参照できます。たとえば、sys.u
は sys.InputName
と同じです。
InputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
InputUnit
— 入力チャネル単位
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
入力チャネル単位。以下のいずれかとして指定します。
文字ベクトル (単入力モデルの場合)。
文字ベクトルの cell 配列 (多入力モデルの場合)。
''
(いずれの入力チャネルにも単位を指定しない場合)。
InputUnit
を使用して入力信号の単位を指定します。InputUnit
はシステムの動作に影響しません。
InputGroup
— 入力チャネル グループ
構造体
入力チャネル グループ。構造体として指定します。InputGroup
プロパティを使用して、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照します。InputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの入力チャネルです。たとえば、入力チャネル 1
と 2
、および 3
と 5
をそれぞれ含む、controls
および noise
という名前の入力グループを作成するには、次のように入力します。
sys.InputGroup.controls = [1 2];sys.InputGroup.noise = [3 5];
その後、以下を使用して controls
入力からすべての出力にサブシステムを抽出できます。
sys(:,'controls')
既定では、InputGroup
はフィールドのない構造体です。
OutputName
— 出力チャネル名
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
出力チャネル名。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも名前を指定しない場合)。
あるいは、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てることもできます。たとえば、sys
が 2 出力モデルである場合は、以下のように入力します。
sys.OutputName = 'measurements';
出力名は自動的に {'measurements(1)';'measurements(2)'}
へと拡張されます。
省略形表記 y
を使用して OutputName
プロパティを参照することもできます。たとえば、sys.y
は sys.OutputName
と同じです。
OutputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
MIMO システムのサブシステムの抽出
モデル相互接続時における接続点の指定
OutputUnit
— 出力チャネル単位
''
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
出力チャネル単位。次のいずれかとして指定されます。
文字ベクトル (単出力モデルの場合)。
文字ベクトルの cell 配列 (多出力モデルの場合)。
''
(いずれの出力チャネルにも単位を指定しない場合)。
OutputUnit
を使用して出力信号の単位を指定します。OutputUnit
はシステムの動作に影響しません。
OutputGroup
— 出力チャネル グループ
構造体
出力チャネル グループ。構造体として指定します。OutputGroup
プロパティを使用して、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照します。OutputGroup
のフィールド名はグループ名であり、フィールドの値は各グループの出力チャネルです。たとえば、出力チャネル 1
、および 3
と 5
をそれぞれ含む、temperature
および measurement
という名前の出力グループを作成します。
sys.OutputGroup.temperature = [1];sys.OutputGroup.measurement = [3 5];
その後、以下を使用してすべての入力から measurement
出力にサブシステムを抽出できます。
sys('measurement',:)
既定では、OutputGroup
はフィールドのない構造体です。
Name
— システム名
''
(既定値) | 文字ベクトル
システム名。文字ベクトルとして指定します。たとえば、'system_1'
とします。
Notes
— ユーザー指定のテキスト
{}
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO'
とします。
UserData
— ユーザー指定のデータ
[]
(既定値) | 任意の MATLAB® データ型
システムに関連付けるユーザー指定のデータ。任意の MATLAB データ型として指定します。
SamplingGrid
— モデル配列のサンプリング グリッド
構造体配列
モデル配列のサンプリング グリッド。構造体配列として指定します。
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(:,:,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 | 動的システムの極 |
zero | SISO 動的システムの零点とゲイン |
pzplot | 追加のプロットのカスタマイズ オプションを使用した動的システム モデルの極-零点プロット |
margin | ゲイン余裕、位相余裕、および交差周波数 |
モデルの変換
tf | 伝達関数モデル |
ss | 状態空間モデル |
c2d | 連続時間から離散時間へモデルを変換 |
d2c | 離散時間から連続時間へモデルを変換 |
d2d | 離散時間モデルのリサンプリング |
モデルの相互接続
feedback | 複数のモデルのフィードバック接続 |
connect | 動的システムのブロック線図相互接続 |
series | 2 つのモデルの直列接続 |
parallel | 2 つのモデルの並列接続 |
コントローラー設計
pidtune | 線形プラント モデルのための PID 調整アルゴリズム |
rlocus | 動的システムの根軌跡プロット |
lqr | 線形 2 次レギュレーター (LQR) 設計 |
lqg | 線形 2 次ガウシアン (LQG) 設計 |
lqi | 線形 2 次積分制御 |
kalman | 状態の推定用のカルマン フィルターの設計 |
例
すべて折りたたむ
連続時間 SISO 零点-極-ゲイン モデル
ライブ スクリプトを開く
この例では、次の連続時間 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.
離散時間 SISO 零点-極-ゲイン モデル
ライブ スクリプトを開く
この例では、サンプル時間 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 secondsDiscrete-time zero/pole/gain model.
SISO 零点-極-ゲイン モデルの MIMO 零点-極-ゲイン モデルへの連結
ライブ スクリプトを開く
この例では、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.
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.
離散時間 MIMO 零点-極-ゲイン モデル
ライブ スクリプトを開く
次の離散時間、多入力、多出力モデルの零点-極-ゲイン モデルを作成します。
サンプル時間は 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 secondsDiscrete-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 secondsDiscrete-time zero/pole/gain model.
入力名の数は、零点の数と一致しなければなりません。
入力と出力に名前を付けるのは、MIMO システムで応答プロットを扱うときに有用である可能性があります。
step(sys)
ステップ応答プロットのタイトルの入力名 Force
に注目してください。
有理式を使用した連続時間の零点-極-ゲイン モデル
ライブ スクリプトを開く
この例では、有理式を使用して連続時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。
以下のシステムを考えます。
伝達関数モデルを作成するには、まず s
を zpk
オブジェクトとして指定します。
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.
有理式を使用した離散時間の零点-極-ゲイン モデル
ライブ スクリプトを開く
この例では、有理式を使用して離散時間の零点-極-ゲイン モデルを作成します。有理式を使用すると、極や零点を指定するよりも簡単でより直観的になる場合があります。
以下のシステムを考えます。
零点-極-ゲインモデルを作成するには、まず z
を zpk
オブジェクトとして指定し、サンプル時間 ts
を指定します。
ts = 0.1;z = zpk('z',ts)
z = z Sample time: 0.1 secondsDiscrete-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 secondsDiscrete-time zero/pole/gain model.
継承されたプロパティをもつ零点-極-ゲイン モデル
ライブ スクリプトを開く
この例では、別の零点-極-ゲイン モデルから継承されたプロパティをもつ零点-極-ゲイン モデルを作成します。次の 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.
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'}
零点-極-ゲイン モデル sys2
が sys1
と同じプロパティをもつことを確認してください。
静的ゲイン MIMO 零点-極-ゲイン モデル
ライブ スクリプトを開く
次の 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.
上記で取得した静的ゲイン零点-極-ゲイン モデル 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 -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); endsys
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
は同定された 形式の離散時間モデルで、 は測定成分、 はノイズ成分を表します。
測定成分とノイズ成分を零点-極-ゲイン モデルとして抽出します。
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 secondsDiscrete-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 secondsDiscrete-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] InputName: {''} InputUnit: {''} InputGroup: [1x1 struct] OutputName: {''} OutputUnit: {''} OutputGroup: [1x1 struct] Notes: [0x1 string] UserData: [] Name: '' Ts: [0] TimeUnit: 'seconds' SamplingGrid: [1x1 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.
ターゲット帯域幅を使用し、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
を使用して伝達関数を変換し、関数 zero
と pole
を使用して状態空間モデルを変換します。
バージョン履歴
R2006a より前に導入
参考
filt | frd | get | set | ss | zpkdata | genss | tf | realp | genmat
トピック
- 伝達関数
- モデル オブジェクトとは
- 離散時間数値モデル
- 正しいモデル表現の使用
- フィードバック ループを閉じるために FEEDBACK を使用
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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
- Deutsch
- English
- Français
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本 (日本語)
- 한국 (한국어)
Contact your local office