モデルデータのアクセスと修正
この例では、LTI オブジェクト内のパラメーター値およびメタデータへのアクセス方法、またはその編集方法を示します。
データへのアクセス
コマンド tf、zpk、ss、および 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.
Model Properties
TF オブジェクト G のすべてのプロパティを表示するには、以下のように入力します。
get(G)
Numerator: {[0 1 2]}
Denominator: {[1 3 10]}
Variable: 's'
IODelay: 0
InputDelay: 3
OutputDelay: 0
InputName: {''}
InputUnit: {''}
InputGroup: [1×1 struct]
OutputName: {''}
OutputUnit: {''}
OutputGroup: [1×1 struct]
Notes: [0×1 string]
UserData: []
Name: ''
Ts: 0
TimeUnit: 'seconds'
SamplingGrid: [1×1 struct]
最初の 4 つのプロパティ Numerator、Denominator、IODelay、および Variable は、TF 表現固有のプロパティです。その他のプロパティは、すべての LTI 表現に共通です。help tf.Numerator を使用すると Numerator プロパティについて詳細な情報を入手でき、他のプロパティについても同様です。
特定のプロパティの値を取得するには、以下を使用します。
G.InputDelay % get input delay valueans = 3
一義的である限り、プロパティ名には省略形を使用できます。以下に例を示します。
G.iod % get transport delay valueans = 0
G.var % get variableans = 's'
データのクイック抽出
また、tfdata、zpkdata、ssdata、または frdata を使用すると、すべてのモデル パラメーターを一度に抽出できます。以下に例を示します。
[Numerator,Denominator,Ts] = tfdata(G)
Numerator = 1×1 cell array
{[0 1 2]}
Denominator = 1×1 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.
Model Properties
コマンド set はドットの代入と同等ですが、一度に複数のプロパティを設定することもできます。
G.Ts = 0.1;
G.Variable = 'q';
GG =
q + 2
q^(-3) * --------------
q^2 + 3 q + 10
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties
感度解析の例
LTI 配列のサポートと共にモデル編集を使用すると、パラメーターの変動への感度を簡単に調査できます。たとえば、以下の 2 次伝達関数の例を見てみます。
.
周波数応答に対する減衰パラメーター 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
