モデルの作成と取り扱い | ![]() ![]() |
LTIプロパティの付加的な意味
この節を読むことにより、例題を通して、Ts
, InputName
, OutputName
, InputGroup
, OutputGroup
LTIプロパティについて、より深く学ぶことができます。Notes
やUserdata
に関する基本的な情報については、"基本的なプロパティ"を参照してください。InputDelay
, OutputDelay
, ioDelay
の使い方の情報については、"むだ時間"を参照してください。
サンプル時間
サンプル時間プロパティTs
は、離散時間LTIモデルまたは離散化した連続時間LTIモデルに対して、サンプル周期を設定するために使われます。つぎのシステム
を0.5秒のサンプル周期をもつ離散時間伝達関数と考えます。つぎのように入力します。
h = tf([1 0],[2 1 1],0.5);
h.Ts ans = 0.5000
連続時間モデルに対して、サンプル時間プロパティTs
は、便宜上0に設定します。たとえば、つぎのようにタイプします。
h = tf(1,[1 0]); get(h,'Ts') ans = 0
離散時間のLTIモデルのサンプル時間を未設定のままにするには、Ts
をに設定します。たとえば、
h = tf(1,[1 -1],-1)
Transfer function: 1 ----- z - 1 Sampling time: unspecified
同じ結果を、Variable
プロパティを使うことによっても得られます。
h = tf(1,[1 -1],'var','z')
いくつかの離散時間モデルを組み合わせる演算では、設定するサンプル時間はすべて同じものでなければなりません。結果のモデルのサンプル時間は、すべてのオペランドが、未設定のサンプル時間の場合、未設定になります。Ts
に関するこの継承ルールでは、つぎの二つのモデルは等価です。
tf(0.1,[1 -1],0.1) + tf(1,[1 0.5],-1)
tf(0.1,[1 -1],0.1) + tf(1,[1 0.5],0.1)
tf(0.1,[1 -1],0.1) + tf(1,[1 0.5],0.5)
??? Error using ==> lti/plus In SYS1+SYS2, both models must have the same sample time.
離散時間システムのサンプル時間を変更したり、リサンプリングするには、d2d
を使います。
入力名と出力名
InputName
プロパティとOutputName
プロパティ(略して、I/O名)を使って、LTIモデルの入力チャンネルと出力チャンネルのすべてまたはある部分に名前を設定することができます。
たとえば、入力thrust
、出力velocity
、伝達関数をもつSISOモデルを、つぎのようにして作成することができます。
h = tf(1,[1 10]); set(h,'inputname','thrust','outputname','velocity',... 'variable','p')
h = tf(1,[1 10],'inputname','thrust',... 'outputname','velocity',... 'variable','p')
Transfer function from input "thrust" to output "velocity": 1 ------ p + 10
入力名、出力名、変数選択に依り、表示がどのように変化するかに注意してください。
MIMOの場合、入力チャンネル名または出力チャンネル名を設定する文字列のセルベクトルを使います。たとえば、つぎのようにタイプします。
num = {3 , [1 2]}; den = {[1 10] , [1 0]}; H = tf(num,den); % H(s)は、1出力2入力をもっています。 set(H,'inputname',{'temperature' ; 'pressure'})
Transfer function from input "temperature" to output: 3 ------ s + 10 Transfer function from input "pressure" to output: s + 2 ----- s
未定義の名前のままにするのは、つぎのように空の文字列''
を使います。
H = tf(num,den,'inputname',{ 'temperature' ; '' })
入力グループと出力グループ
多くのアプリケーションで、入力または出力チャンネルの複数のグループを作成し、それらに名前を付ける場合があります。たとえば、入力のあるグループにnoise
、残りのものにcontrols
を付ける場合などです。
これを行うには、入力または出力グループ(I/Oグループ)が、どのように機能するかを見ましょう。
controls
、最初の出力にtemperature
、最後の2つの出力にmeasurements
と名前を付けます。
h = rss(1,3,3); set(h, 'InputGroup',{[1 2] 'controls'}) set(h, 'OutputGroup', {[1] 'temperature'; [2 3] 'measurements'}) h
そして、MATLABは、つぎの型の状態空間モデルを出力します。
a = x1 x1 -0.64884 b = u1 u2 u3 x1 0.12533 0 0 c = x1 y1 1.1909 y2 1.1892 y3 0 d = u1 u2 u3 y1 0.32729 0 -0.1364 y2 0 0 0 y3 0 2.1832 0 I/O Groups: Group Name I/O Channel(s) controls I 1,2 temperature O 1 measurements O 2,3 Continuous-time model.
I/Oグループリストの中央の列は、グループが入力グループ(I
)か出力グループ(O
)のどちらかを示すものです。
一般に、M入力グループ(または出力グループ)を設定すると、つぎのような型のM行2列のセル配列を必要とします。
入力(または出力)グループに対するセル配列を設定するときは、つぎのことを注意してください。
''
)を割り当てます。h.InputGroup = [h.InputGroup; {[3] 'disturbance
'}];
は、disturbance
と呼ばれる他の入力グループをh
に付加します。
I/Oグループ要素にアクセスしたり、変更したりするには、通常のセル配列構文を使うことができます。たとえば、最初の出力グループtemperature
を削除するには、つぎのようにタイプします。
h.OutputGroup(1,:) = [] ans = [1x2 double] 'measurements'
同様に、既に存在している入力グループまたは出力グループにチャンネルを付加したり、削除したりできます。入力グループチャンネルが対応するセル配列の最初の列にストアされていることを思い出してください。そして、チャンネル3を入力グループcontrols
に付加するには、つぎのようにタイプします。
h.inputgroup{1,1} = [h.inputgroup{1,1} 3]
h.inputgroup{1,1} = [1 2 3]
![]() | プロパティの直接参照 | モデルの変換 | ![]() |