Main Content

モデル データの格納と取得

モデル プロパティ

"モデル プロパティ" は動的システム モデルに関するすべてのデータを格納するデータ フィールドです。モデル プロパティに格納されるデータには、伝達関数の係数、状態空間行列およびむだ時間などのモデル ダイナミクスがあります。モデル プロパティによって、サンプル時間、チャネル名および状態名など、それ以外のモデル属性も指定できます。

各モデル タイプに関連付けられているプロパティの詳細については、tfpidss など、該当するリファレンス ページを参照してください。

モデル作成時のモデル プロパティの指定

動的システム モデルの作成時には、すべてのプロパティ値が設定されます。モデル ダイナミクスを含むプロパティには適切な値が自動的に設定されます。その他のプロパティには既定値が設定されます (既定のプロパティ値の詳細については、モデルのリファレンス ページを参照してください)。

モデルの作成時に、モデル作成コマンドの Name,Value ペアの構文を使用して、モデル プロパティに他の値を指定できます。この構文では、設定するプロパティの名前に続けて値を指定します。1 つのコマンドで複数のプロパティ値が設定できます。たとえば、伝達遅延と入力名および出力名を新しい伝達関数モデルに割り当てます。

H = tf(1,[1 10],'IODelay',6.5,'InputName','torque','OutputName','velocity')
H =
 
  From input "torque" to output "velocity":
                  1
  exp(-6.5*s) * ------
                s + 10
 
Continuous-time transfer function.

プロパティ値によっては、入力名や出力名などのように、モデル表示に反映されます。Name,Value ペアの構文は、すべてのタイプのモデルの作成で使用できます。

既存のモデルのプロパティの確認と変更

既存の状態空間 (ss) モデルを読み込みます。

load('PadeApproximation1.mat','sys')
sys
sys =
 
  A = 
         x1    x2
   x1  -1.5  -0.1
   x2     1     0
 
  B = 
       u1
   x1   1
   x2   0
 
  C = 
        x1   x2
   y1  0.5  0.1
 
  D = 
       u1
   y1   0
 
  (values computed with all internal delays set to zero)

  Output delays (seconds): 1.5 
  Internal delays (seconds): 3.4 
 
Continuous-time state-space model.

sys が状態空間モデルであることが示され、sys のプロパティ値の一部が表示されます。sys のすべてのプロパティを表示するには、get コマンドを使用します。

get(sys)
                A: [2x2 double]
                B: [2x1 double]
                C: [0.5000 0.1000]
                D: 0
                E: []
          Offsets: []
           Scaled: 0
        StateName: {2x1 cell}
        StatePath: {2x1 cell}
        StateUnit: {2x1 cell}
    InternalDelay: 3.4000
       InputDelay: 0
      OutputDelay: 1.5000
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1x1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1x1 struct]
            Notes: [0x1 string]
         UserData: []
             Name: ''
               Ts: 0
         TimeUnit: 'seconds'
     SamplingGrid: [1x1 struct]

特定のプロパティの値にアクセスするには、ドット表記を使用します。たとえば、sys の行列 A を表示します。

Amat = sys.A
Amat = 2×2

   -1.5000   -0.1000
    1.0000         0

ドット表記によって、個々のモデル プロパティの値を変更することもできます。

sys.InputDelay = 4.2;
sys.InputName = 'thrust';
sys.OutputName = 'velocity';

状態空間行列の次元を変更するなど、モデルの有効性を保持するために複数のプロパティ値を同時に変更しなければならない場合、setコマンドを使用できます。たとえば、1 状態の状態空間モデルを作成して、その後 2 状態モデルを表す新しい値で行列を置き換えます。

sys2 = rss(1);
Anew = [-2, 1; 0.5 0];
Bnew = [1; -1];
Cnew = [0, -0.4];
set(sys2,'A',Anew,'B',Bnew,'C',Cnew)
sys2
sys2 =
 
  A = 
        x1   x2
   x1   -2    1
   x2  0.5    0
 
  B = 
       u1
   x1   1
   x2  -1
 
  C = 
         x1    x2
   y1     0  -0.4
 
  D = 
           u1
   y1  0.3426
 
Continuous-time state-space model.

TsTimeUnit などの特定のプロパティの変更では、システム動作に望ましくない変化が生じる可能性があります。詳細は、モデルのリファレンス ページにあるプロパティの説明を参照してください。

関連するトピック