Main Content

モデルへのメタデータの付加

モデル時間単位の指定

この例は、伝達関数モデルの時間単位を指定する方法を示します。

tf モデル オブジェクトの TimeUnit プロパティは、時間変数、むだ時間 (連続時間モデルの場合) およびサンプル時間 Ts (離散時間モデルの場合) の単位を指定します。既定の時間単位は seconds です。

時間単位をミリ秒にして SISO 伝達関数モデル sys=4s+2s2+3s+10 を作成します。

num = [4 2];
den = [1 3 10];
sys = tf(num,den,'TimeUnit','milliseconds');

同様の方法で動的システムの時間単位を指定できます。

システム時間単位は、時間領域と周波数領域のプロットで示されます。異なる時間単位の複数のシステムでは、最初のシステムの単位は、ツールボックス基本設定の時間と周波数の単位が auto になる場合に使用されます。

メモ

TimeUnit プロパティを変更すると、システム動作が変更されます。システム動作を変更せずに異なる時間単位を使用する場合は、chgTimeUnit を使用します。

異なる時間単位の相互接続モデル

この例は、異なる時間単位の伝達関数モデルを相互接続する方法を示します。

算術演算や相互接続コマンドを使用してモデルを相互接続するには、すべてのモデルの時間単位が一致していなければなりません。

  1. ミリ秒と秒の時間単位で 2 つの伝達関数モデルをそれぞれ作成します。

    sys1 = tf([1 2],[1 2 3],'TimeUnit','milliseconds');
    sys2 = tf([4 2],[1 3 10]);
    
  2. sys2 の時間単位をミリ秒に変更します。

    sys2 = chgTimeUnit(sys2,'milliseconds');
    
  3. システムを並列で接続します。

    sys = sys1+sys2;

周波数応答データ モデルの周波数単位の指定

この例は、周波数応答データ モデルの周波数点の単位を指定する方法を示します。

FrequencyUnit プロパティは、frd モデル オブジェクトの Frequency プロパティで周波数ベクトルの単位を指定します。既定の周波数単位は、rad/TimeUnit です。ここで、TimeUnitTimeUnit プロパティ内で指定される時間単位です。

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 モデル内の入力と出力を追跡するのに役立ちます。

  1. 3 入力と 4 出力をもつ状態空間モデルを作成します。

    H = rss(3,4,3);
  2. 入力を次のようにグループ化します。

    • controls という名前のグループの入力 1 および 2

    • temperature という名前のグループへの出力 1 および 3

    • measurements という名前のグループへの出力 1、3、4

    H.InputGroup.controls = [1 2];
    H.OutputGroup.temperature = [1 3];
    H.OutputGroup.measurements = [1 3 4];
    

    InputGroupOutputGroup は構造体です。構造体の各フィールドの名前は入力または出力のグループ名です。各フィールドの値は、そのグループのチャネルを識別するベクトルです。

  3. controls 入力と temperature 出力に対応するサブシステムを抽出します。

    グループ名を使用してサブシステムにインデックス付けすることができます。

    Hc = H('temperature','controls')

    Hc は 2 入力 2 出力の ss モデルです。そして、'controls' 入力から 'temperature' 出力までの I/O チャネルを含みます。

    この図で示すように、H とサブシステム Hc の間の関係を見ることができます。

関連するトピック