モデルへのメタデータの付加
モデル時間単位の指定
この例は、伝達関数モデルの時間単位を指定する方法を示します。
tf
モデル オブジェクトの TimeUnit
プロパティは、時間変数、むだ時間 (連続時間モデルの場合) およびサンプル時間 Ts (離散時間モデルの場合) の単位を指定します。既定の時間単位は seconds
です。
時間単位をミリ秒にして SISO 伝達関数モデル を作成します。
num = [4 2]; den = [1 3 10]; sys = tf(num,den,'TimeUnit','milliseconds');
同様の方法で動的システムの時間単位を指定できます。
システム時間単位は、時間領域と周波数領域のプロットで示されます。異なる時間単位の複数のシステムでは、最初のシステムの単位は、ツールボックス基本設定の時間と周波数の単位が auto
になる場合に使用されます。
メモ
TimeUnit
プロパティを変更すると、システム動作が変更されます。システム動作を変更せずに異なる時間単位を使用する場合は、chgTimeUnit
を使用します。
異なる時間単位の相互接続モデル
この例は、異なる時間単位の伝達関数モデルを相互接続する方法を示します。
算術演算や相互接続コマンドを使用してモデルを相互接続するには、すべてのモデルの時間単位が一致していなければなりません。
ミリ秒と秒の時間単位で 2 つの伝達関数モデルをそれぞれ作成します。
sys1 = tf([1 2],[1 2 3],'TimeUnit','milliseconds'); sys2 = tf([4 2],[1 3 10]);
sys2
の時間単位をミリ秒に変更します。sys2 = chgTimeUnit(sys2,'milliseconds');
システムを並列で接続します。
sys = sys1+sys2;
周波数応答データ モデルの周波数単位の指定
この例は、周波数応答データ モデルの周波数点の単位を指定する方法を示します。
FrequencyUnit
プロパティは、frd
モデル オブジェクトの Frequency
プロパティで周波数ベクトルの単位を指定します。既定の周波数単位は、rad/TimeUnit
です。ここで、TimeUnit
は TimeUnit
プロパティ内で指定される時間単位です。
GHz の周波数データでランダムな SISO 周波数応答データ モデルを作成します。
resp = randn(7,1) + i*randn(7,1); freq = logspace(-2,2,7); sys = frd(resp,freq,'FrequencyUnit','GHz');
周波数点とサンプル時間をそれぞれ FrequencyUnit
プロパティと TimeUnit
プロパティで測定する単位を独立して指定できます。また、同様の方法で genfrd
の周波数単位も指定できます。
周波数単位は周波数領域プロットに表示されます。異なる周波数単位の複数のシステムでは、最初のシステムの単位は、ツールボックス基本設定の周波数単位が auto
になる場合に使用されます。
メモ
FrequencyUnit
プロパティを変更すると、システム動作が変更されます。システム動作を変更せずに異なる周波数単位を使用する場合は、chgFreqUnit
を使用します。
多入力多出力 (MIMO) モデルのサブシステムの抽出
この例では、MATLAB® インデックスを使用し、チャネル名を使用して、MIMO モデルのサブシステムを抽出する方法を示します。
たとえば、複雑なシステムの部分を分析するときにサブシステムの抽出を利用できます。
MIMO 伝達関数を作成します。
G1 = tf(3,[1 10]); G2 = tf([1 2],[1 0]); G = [G1,G2];
最初の入力からすべての出力まで、G
のサブシステムを抽出します。
Gsub = G(:,1);
このコマンドは MATLAB インデックスを使用して、サブシステムを G(out,in)
として指定します。ここで、out
は出力インデックスを指定し、in
は入力インデックスを指定します。
チャネル名を使うと、MATLAB インデックスを使用して、特定のチャネルに関連するすべてのダイナミクスを抽出できます。この方法を使うことにより、複雑な MIMO モデル内のチャネル次数を追跡する必要がなくなります。
名前をモデル入力に割り当てます。
G.InputName = {'temperature';'pressure'};
G
に 2 つの入力があるので、1 つの cell 配列を使用して 2 つのチャネル名を指定します。
'temperature'
入力からすべての出力まで、ダイナミクスのすべてを含む G
のサブシステムを選択します。
Gt = G(:,'temperature');
Gt
は、Gsub
と同じサブシステムです。
メモ
特定の状態空間 (ss
) モデルからサブシステムを抽出する場合は、出力される状態空間モデルは最小実現にならない可能性があります。sminreal
を使用して、サブシステム内の不要な状態を削除してください。
入力グループと出力グループの指定と選択
この例では、モデル オブジェクト内の入力および出力チャネルのグループを指定し、そのグループを使用してサブシステムを抽出する方法を示します。
入力および出力のグループは、複雑な MIMO モデル内の入力と出力を追跡するのに役立ちます。
3 入力と 4 出力をもつ状態空間モデルを作成します。
H = rss(3,4,3);
入力を次のようにグループ化します。
controls
という名前のグループの入力 1 および 2temperature
という名前のグループへの出力 1 および 3measurements
という名前のグループへの出力 1、3、4
H.InputGroup.controls = [1 2]; H.OutputGroup.temperature = [1 3]; H.OutputGroup.measurements = [1 3 4];
InputGroup
とOutputGroup
は構造体です。構造体の各フィールドの名前は入力または出力のグループ名です。各フィールドの値は、そのグループのチャネルを識別するベクトルです。controls
入力とtemperature
出力に対応するサブシステムを抽出します。グループ名を使用してサブシステムにインデックス付けすることができます。
Hc = H('temperature','controls')
Hc
は 2 入力 2 出力のss
モデルです。そして、'controls'
入力から'temperature'
出力までの I/O チャネルを含みます。この図で示すように、
H
とサブシステムHc
の間の関係を見ることができます。