このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
パラメーターの変化から派生した複数の操作点でのモデルのバッチ線形化
アプリケーションにモデルの操作点に影響するパラメーターの変化が含まれる場合、線形化を行う前に、パラメーターを変化させてモデルをバッチ平衡化しなければなりません。このバッチ線形化手法は、線形パラメーター変動システムでの線形モデルの計算に使用します。
パラメーターが変化するモデルのバッチ平衡化の詳細については、パラメーターが変化する定常状態の操作点のバッチ計算を参照してください。
Simulink モデルを開きます。
sys = 'watertank';
open_system(sys)
パラメーター A
および b
を、そのノミナル値の 10% 以内で変化させます。A
に 3 つの値、b
に 4 つの値を指定して、各パラメーターに 3 行 4 列の値のグリッドを作成します。
[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
linspace(0.9*b,1.1*b,4));
パラメーターの構造体配列を作成し、各パラメーターに名前とグリッド点を指定します。
params(1).Name = 'A'; params(1).Value = A_grid; params(2).Name = 'b'; params(2).Value = b_grid;
モデルに既定の操作点の仕様を作成して、モデルの両方の状態が不明であり、平衡化された操作点で定常状態になければならないことを指定します。
opspec = operspec(sys);
指定した操作点の仕様、パラメーター グリッドおよびオプション セットを使用して、モデルを平衡化します。操作点探索レポートを非表示にします。
opt = findopOptions('DisplayReport','off'); [op,opreport] = findop(sys,opspec,params,opt);
findop
は、1 回のモデル コンパイルのみを使用してパラメーターの各組み合わせでモデルを平衡化します。op
は、指定されたパラメーター グリッド点に対応する操作点オブジェクトからなる 3 行 4 列の配列です。
モデルの閉ループ入出力伝達関数を計算するには、線形化の入力ポイントと出力ポイントを、それぞれ基準入力およびモデル出力として定義します。
io(1) = linio('watertank/Desired Water Level',1,'input'); io(2) = linio('watertank/Water-Tank System',1,'output');
同じモデルから開ループおよび閉ループ伝達関数を複数抽出するには、slLinearizer
インターフェイスを使用してシステムをバッチ線形化します。詳細については、パラメーター値を変化させて複数の伝達関数を取得を参照してください。
指定された I/O ポイントとパラメーターの変化を使用して、平衡化された操作点でモデルをバッチ線形化します。
G = linearize(sys,op,io,params);
G
は、線形化されたモデルの 3 行 4 列の配列です。配列の各エントリには、params
で対応するパラメーターの組み合わせの線形化が含まれます。たとえば、G(:,:,2,3)
は、A
および b
の各パラメーターの値をそれぞれ A_grid(2,3)
および b_grid(2,3)
に設定して取得された線形化に対応します。モデル配列 G
の各エントリに対応するパラメーター値のセットは、G
の SamplingGrid
プロパティに保存されます。たとえば、線形化 G(:,:,2,3)
の対応するパラメーター値を調べます。
G(:,:,2,3).SamplingGrid
ans = struct with fields: A: 20 b: 5.1667
パラメーターを変化させてバッチ線形化を行う場合、線形化の操作点に対応する線形化オフセットを取得できます。これを行うには、StoreOffsets
線形化オプションを設定します。
opt = linearizeOptions('StoreOffsets',true);
指定されたパラメーター グリッドを使用してモデルを線形化し、線形化のオフセットを info
構造体に返します。
[G,~,info] = linearize('watertank',io,params,opt);
このオフセットを使用して、LPV System ブロックを構成できます。これを行うには、まずオフセットを必要な形式に変換しなければなりません。例については、昇圧コンバーター モデルの LPV 近似を参照してください。
offsets = getOffsetsForLPV(info);
参考
linearize
| linio
| findop
| ndgrid