最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
零点-極-ゲイン モデルを作成するか、零点-極-ゲイン モデルに変換する
sys = zpk(Z,P,K)
sys = zpk(Z,p,k,Ts)
sys = zpk(M)
sys = zpk(Z,p,k,ltisys)
s = zpk('s')
z = zpk('z',Ts)
zsys = zpk(sys)
zsys = zpk(sys,
'measured')
zsys = zpk(sys, 'noise')
zsys = zpk(sys, 'augmented')
zpk
を使用すると、零点-極-ゲイン モデル (zpk
モデル オブジェクト) を作成するか、あるいは動的システムを零点-極-ゲイン形式に変換します。
sys = zpk(Z,P,K)
は、零点 Z
、極 P
およびゲイン K
を備えた連続時間零点-極-ゲイン モデルを作成します。出力 sys
はモデル データを格納する zpk
モデル オブジェクトです。
SISO の場合、Z
と P
は、実数値または複素数値の零点と極のベクトルであり、K
は実数値または複素数値のスカラー ゲインです。
零点または極がないシステムでは、Z
または p
を []
に設定してください。この 2 つのベクトルは長さが同じである必要はなく、モデルはプロパーである必要はありません (つまり、極が過剰に存在)。
MIMO 零点-極-ゲイン モデルを作成するには、このモデルの各 SISO エントリの零点、極、およびゲインを指定します。この場合、
Z
と P
は、行数が出力と同じで列数が入力と同じベクトルの cell 配列です。K
は行数が出力と同じで列数が入力と同じ行列です。
ベクトル Z{i,j}
と P{i,j}
は、入力 j
から出力 i
への伝達関数の零点と極を指定します。
K(i,j)
は、入力 j
から出力 i
への伝達関数の (スカラー) ゲインを指定します。
sys = zpk(Z,p,k,Ts)
は、サンプル時間 Ts
(秒単位) で離散時間零点-極-ゲイン モデルを作成します。サンプル時間を未指定のままにするには、Ts = -1
または Ts = []
を設定します。入力引数 Z
、P
および K
は、連続時間の場合と同じです。
sys = zpk(M)
は、静的ゲイン M
を指定します。
sys = zpk(Z,p,k,ltisys)
は、プロパティを備えた零点-極-ゲイン モデルを作成します。このプロパティは、LTI モデル ltisys
から継承したものです (サンプル時間も含む)。
zpk
モデル オブジェクトの配列を作成するには、for
ループを使用します。または、Z
と P
には多次元 cell 配列、K
には多次元配列を使用します。
これまで説明したどの構文にも、次のプロパティ名/プロパティ値の組み合わせを続けることができます。
'PropertyName',PropertyValue
各組は入力名や入力遅延時間などのモデルの特定のプロパティを指定します。zpk
モデル オブジェクトのプロパティの詳細は、プロパティを参照してください。次の点に注意してください。
sys = zpk(Z,P,K,'Property1',Value1,...,'PropertyN',ValueN)
は次のコマンドの並びのショートカットです。
sys = zpk(Z,P,K) set(sys,'Property1',Value1,...,'PropertyN',ValueN)
また、有理式を使用して ZPK モデルを作成することもできます。そのためには、次のいずれかを入力します。
s = zpk('s')
は、ラプラス変数 s
で有理関数を使用して ZPK モデルを指定します。
z = zpk('z',Ts)
は、離散時間変数 z
で有理関数を使用してサンプル時間が Ts
の ZPK モデルを指定します。
これらの変数のいずれかを指定すると、ZPK モデルを有理式として変数 s
または z
で直接指定することができるようになります。そのためには、伝達関数を有理式として s
または z
に入力します。
zsys = zpk(sys)
は、任意の LTI モデル sys
を零点-極-ゲイン形式に変換します。出力 zsys
は ZPK オブジェクトです。既定では、状態空間から零点-極-ゲインに変換するとき、zpk
は zero
を使用して零点を計算します。あるいは、
zsys = zpk(sys,'inv')
は状態空間モデルの反転公式を使用して、零点を計算します。このアルゴリズムは高速ですが、s = 0 では低ゲインの高次モデルで精度が低下します。
特定されたモデルは形式 y(t) = Gu(t) + He(t)
の入出力式によって表されます。ここで u(t)
は測定された入力チャネルであり、e(t)
はノイズ チャネルを表します。Λ= LL' がノイズ e(t)
の共分散を表す場合、この式は y(t) = Gu(t) + HLv(t)
のように記述することもできます (cov(v(t))
= I
)。
zsys = zpk(sys)
または zsys = zpk(sys,
'measured')
は、同定された線形モデルの測定成分を ZPK 形式に変換します。sys
はタイプ idss
、idproc
、idtf
、idpoly
または idgrey
のモデルです。zsys
は u
と y
の関係を表します。
zsys = zpk(sys, 'noise')
は同定された線形モデルのノイズ成分を ZPK 形式に変換します。これは、ノイズ入力 v(t)
と出力 y_noise = HL v(t)
の関係を表します。ノイズ入力チャネルは、InputGroup
'Noise'
に属します。ノイズ入力チャネルの名前は v@yname
であり、ここで yname
は対応する出力チャネルの名前です。zsys
には出力と同じ数の入力があります。
zsys = zpk(sys, 'augmented')
は測定されたダイナミクスとノイズ ダイナミクスの両方を ZPK モデルに変換します。zsys
には、最初の nu
入力がチャネル u(t)
を表し、残りはチャネル別にノイズ チャネル v(t)
を表す ny+nu
入力があります。zsys.InputGroup
には、'measured'
と 'noise'
の 2 つの入力グループがあります。zsys.InputGroup.Measured
は 1:nu
に設定され、zsys.InputGroup.Noise
は nu+1:nu+ny. zsys
に設定され、式 y(t)
= [G HL] [u; v]
を表します。
ヒント
同定された非線形モデルは ZPK システムに変換できません。linearize
や linapp
などの線形近似関数を使用します。
伝達関数の場合、零点-極-ゲイン モデルの表示に使用する変数を指定することができます。使用できる選択肢は、連続時間モデルでは s (既定値) と p、離散時間モデルでは z (既定値)、z-1、q-1 (z-1 と等価)、または q (z と等価) です。既定値をオーバーライドするには、'Variable'
プロパティを再度割り当てます。変数を変更しても、影響を受けるのは零点-極-ゲイン モデルの表示だけです。
zpk
オブジェクトには次のプロパティがあります。
|
システムの零点。
| ||||||||||||
|
システムの極
| ||||||||||||
|
システム ゲイン。
| ||||||||||||
|
分子と分母の多項式を表示するために因数分解する方法を指定します。 分子と分母の多項式は、1 次と 2 次の係数の積としてそれぞれ表示されます。
連続時間モデルの場合、下の表は多項式の係数が各表示形式でどのように書き込まれるかを示します。
離散時間モデルの場合、多項式の係数は以下の変数の代入により連続時間で記述されます。 ここで、Ts はサンプル時間です。離散時間では、τ と ω0 は、等価な連続時間根の時定数と固有振動数と厳密に一致します。ただし、|z–1| ≪ Ts (ω0 ≪ π/Ts = ナイキスト周波数)。 既定値: | ||||||||||||
|
伝達関数表示変数。以下のいずれかとして指定します。
既定値: | ||||||||||||
|
伝達遅延。 連続時間システムの場合、
既定値: すべての入出力の組み合わせに対して | ||||||||||||
|
各入力チャネルの入力遅延。スカラー値または数値ベクトルとして指定します。連続時間システムの場合、
既定値: 0 | ||||||||||||
|
出力遅延。
既定値: すべての出力チャネルに対して 0 | ||||||||||||
|
サンプル時間。連続時間モデルの場合、 このプロパティを変更してもモデルの離散化やリサンプリングは行われません。 既定値: | ||||||||||||
|
モデル内の時間変数、サンプル時間
このプロパティを変更しても他のプロパティには影響しないため、システム全体の動作が変更されます。 既定値: | ||||||||||||
|
入力チャネル名。以下のいずれかとして指定します。
または、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てます。たとえば、 sys.InputName = 'controls'; 入力名は自動的に 省略形表記 以下を含めて、入力チャネル名はいくつかの用途をもちます。
既定値: すべての入力チャネルに対する | ||||||||||||
|
入力チャネル単位。以下のいずれかとして指定します。
既定値: すべての入力チャネルに対する | ||||||||||||
|
入力チャネル グループ。 sys.InputGroup.controls = [1 2]; sys.InputGroup.noise = [3 5]; これは、入力チャネル 1、2 および 3、5 をそれぞれ含む sys(:,'controls') 既定値: フィールドのない構造体 | ||||||||||||
|
出力チャネル名。次のいずれかとして指定されます。
または、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てます。たとえば、 sys.OutputName = 'measurements'; 出力名は自動的に 省略形表記 以下を含めて、出力チャネル名はいくつかの用途をもちます。
既定値: すべての出力チャネルに対して | ||||||||||||
|
出力チャネル単位。次のいずれかとして指定されます。
既定値: すべての出力チャネルに対して | ||||||||||||
|
出力チャネル グループ。 sys.OutputGroup.temperature = [1]; sys.InputGroup.measurement = [3 5]; これは、出力チャネル 1 および 3、5 をそれぞれ含む sys('measurement',:) 既定値: フィールドのない構造体 | ||||||||||||
|
システム名。文字ベクトルとして指定します。たとえば、 既定値: | ||||||||||||
|
システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として格納されます。プロパティには指定したデータ型が格納されます。たとえば、 sys1.Notes = "sys1 has a string."; sys2.Notes = 'sys2 has a character vector.'; sys1.Notes sys2.Notes ans = "sys1 has a string." ans = 'sys2 has a character vector.' 既定値: | ||||||||||||
|
システムに関連付ける任意のデータ型。任意の MATLAB® データ型として指定します。 既定値: | ||||||||||||
|
モデル配列のサンプリング グリッド。データ構造として指定されます。 1 つまたは複数の独立変数をサンプリングすることによって得られるモデル配列の場合、このプロパティは配列内の各モデルに関連付けられた変数値を追跡します。この情報はモデル配列を表示またはプロットすると表示されます。この情報を使用して、結果を独立変数まで遡ります。 データ構造のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値でスカラー値でなければならず、サンプル値のすべての配列はモデル配列の次元に一致しなければなりません。 たとえば、 sysarr.SamplingGrid = struct('time',0:10) 同様に、2 つの変数 [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>) M.SamplingGrid = struct('zeta',zeta,'w',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® モデルを線形化することにより生成されたモデル配列の場合、 既定値: |
連続時間 SISO 伝達関数を作成します。
h(s) を zpk
オブジェクトとして作成します。
h = zpk(0, [1-i 1+i 2], -2);
次の 1 入力/2 出力の零点-極-ゲイン モデルを指定します。
このためには、次のように入力します。
Z = {[] ; -0.5}; P = {0.3 ; [0.1+i 0.1-i]}; K = [1 ; 2]; H = zpk(Z,P,K,-1); % unspecified sample time
次の伝達関数を
h = tf([-10 20 0],[1 7 20 28 19 5]);
次を使用して、零点-極-ゲイン形式に変換します。
zpk(h)
このコマンドは次の結果を返します。
Zero/pole/gain: -10 s (s-2) ---------------------- (s+1)^3 (s^2 + 4s + 5)
変数 z
の有理式から離散時間 ZPK モデルを作成します。
z = zpk('z',0.1); H = (z+.1)*(z+.2)/(z^2+.6*z+.09)
このコマンドで次の結果が出力されます。
Zero/pole/gain: (z+0.1) (z+0.2) --------------- (z+0.3)^2 Sample time: 0.1
零点と極の cell 配列を使用して MIMO zpk
モデルを作成します。
2 入力/2 出力の零点-極-ゲイン モデル
を、次を入力して作成します。
Z = {[],-5;[1-i 1+i] []}; P = {0,[-1 -1];[1 2 3],[]}; K = [-1 3;2 0]; H = zpk(Z,P,K);
H(s) の対応する要素に零点または極がない場合は、[]
を Z
または P
のプレース ホルダーとして使用します。
同定された多項式モデルの測定成分とノイズ成分を 2 つの別々の ZPK モデルに抽出します。前者 (測定成分) はプラント モデルとなることができ、後者は制御システム設計の外乱モデルとなることができます。
load icEngine z = iddata(y,u,0.04); nb = 2; nf = 2; nc = 1; nd = 3; nk = 3; sys = bj(z, [nb nc nd nf nk]);
sys
は y(t)
= B/F u(t) + C/D e(t)
形式のモデルで、B/F
は測定成分、C/D
はノイズ成分を表します。
sysMeas = zpk(sys, 'measured')
あるいは、zpk(sys)
を使用して測定成分を抽出することもできます。
sysNoise = zpk(sys, 'noise')
zpk
は、MATLAB 関数 roots
を使用して伝達関数を変換し、関数 zero
と pole
を使用して状態空間モデルを変換します。