モデルデータのアクセスと修正
この例では、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.
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 つのプロパティ Numerator
、Denominator
、IODelay
、および 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'
データのクイック抽出
また、tfdata
、zpkdata
、ssdata
、または 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 次伝達関数の例を見てみます。
周波数応答に対する減衰パラメーター 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