Main Content

モデルデータのアクセスと修正

この例では、LTI オブジェクト内のパラメーター値およびメタデータへのアクセス方法、またはその編集方法を示します。

データへのアクセス

コマンド tfzpkss、および frd は、単一の MATLAB® 変数にモデル データを格納する LTI オブジェクトを作成します。このデータには、モデル固有のパラメーター (状態空間モデルの A、B、C、D 行列など) および一般的なメタデータ (入力名や出力名など) が含まれています。データは、プロパティと呼ばれるデータ フィールドの固定セットに配置されています。

モデル データには、以下の方法でアクセスできます。

  • get コマンド

  • 構造体状のドット表記

  • データ抽出コマンド

例示のために、SISO 伝達関数 (TF) を作成します。

G = tf([1 2],[1 3 10],'inputdelay',3)
G =
 
                  s + 2
  exp(-3*s) * --------------
              s^2 + 3 s + 10
 
Continuous-time transfer function.

TF オブジェクト G のすべてのプロパティを表示するには、以下のように入力します。

get(G)
       Numerator: {[0 1 2]}
     Denominator: {[1 3 10]}
        Variable: 's'
         IODelay: [0]
      InputDelay: [3]
     OutputDelay: [0]
       InputName: {''}
       InputUnit: {''}
      InputGroup: [1x1 struct]
      OutputName: {''}
      OutputUnit: {''}
     OutputGroup: [1x1 struct]
           Notes: [0x1 string]
        UserData: []
            Name: ''
              Ts: [0]
        TimeUnit: 'seconds'
    SamplingGrid: [1x1 struct]

最初の 4 つのプロパティ NumeratorDenominatorIODelay、および Variable は、TF 表現固有のプロパティです。その他のプロパティは、すべての LTI 表現に共通です。help tf.Numerator を使用すると Numerator プロパティについて詳細な情報を入手でき、他のプロパティについても同様です。

特定のプロパティの値を取得するには、以下を使用します。

G.InputDelay    % get input delay value
ans = 3

一義的である限り、プロパティ名には省略形を使用できます。以下に例を示します。

G.iod    % get transport delay value
ans = 0
G.var    % get variable
ans = 
's'

データのクイック抽出

また、tfdatazpkdatassdata、または frdata を使用すると、すべてのモデル パラメーターを一度に抽出できます。以下に例を示します。

[Numerator,Denominator,Ts] = tfdata(G)
Numerator = 1x1 cell array
    {[0 1 2]}

Denominator = 1x1 cell array
    {[1 3 10]}

Ts = 0

分子と分母は、cell 配列として返されることに注意してください。これは、Numerator および Denominator が分子と分母の多項式の cell 配列 (1 組の I/O に対して 1 つのエントリ) を含む MIMO の場合と同様です。SISO 伝達関数では、フラグを使用して分子と分母のデータをベクトルとして返せます。以下に例を示します。

[Numerator,Denominator] = tfdata(G,'v')
Numerator = 1×3

     0     1     2

Denominator = 1×3

     1     3    10

データの編集

対応するプロパティ値を set またはドット表記で編集すると、LTI オブジェクト内に格納されているデータを変更できます。たとえば、上で作成した伝達関数 G で、次のようにします。

G.Ts = 1;

上記では、サンプル時間が 0 から 1 に変更され、モデルは離散として再定義されます。

G
G =
 
               z + 2
  z^(-3) * --------------
           z^2 + 3 z + 10
 
Sample time: 1 seconds
Discrete-time transfer function.

コマンド set はドットの代入と同等ですが、一度に複数のプロパティを設定することもできます。

G.Ts = 0.1;
G.Variable = 'q';
G
G =
 
               q + 2
  q^(-3) * --------------
           q^2 + 3 q + 10
 
Sample time: 0.1 seconds
Discrete-time transfer function.

感度解析の例

LTI 配列のサポートと共にモデル編集を使用すると、パラメーターの変動への感度を簡単に調査できます。たとえば、以下の 2 次伝達関数の例を見てみます。

H(s)=s+5s2+2ζs+5

周波数応答に対する減衰パラメーター zeta の影響は、異なる zeta 値をもつ 3 つのモデルを作成し、そのボード線図を比較することで調査できます。

s = tf('s');

% Create 3 transfer functions with Numerator = s+5 and Denominator = 1
H = repsys(s+5,[1 1 3]);  

% Specify denominators using 3 different zeta values
zeta = [1 .5 .2];
for k = 1:3
  H(:,:,k).Denominator = [1 2*zeta(k) 5];  % zeta(k) -> k-th model
end

% Plot Bode response
bode(H)
grid