バッチ線形化用のパラメーター サンプルの指定
ブロック パラメーターはいくつかの方法で Simulink® モデルを構成します。たとえば、ブロック パラメーターを使用して、さまざまな係数またはコントローラーのサンプル時間を指定できます。Multiport Switch ブロックへの制御入力のように、離散パラメーターを使用してモデル内のデータ パスを制御することもできます。パラメーターの値を変化させることで、そのパラメーターによるモデルの動作への影響を理解するのに役立ちます。
何らかの Simulink Control Design™ 線形化ツールを使用する (または slTuner
や制御システム調整器を使って調整する) 場合は、モデルの線形化に使用する一連のブロック パラメーター値を指定できます。値の完全なセットは、"パラメーター グリッド" または "パラメーター サンプル" と呼ばれます。これらのツールは、パラメーター グリッドのそれぞれの値で線形化を計算してモデルのバッチ線形化を行います。複数のパラメーターを変化させることで、パラメーター グリッドの次元を拡張できます。linearize
コマンド、slLinearizer
インターフェイス、slTuner
インターフェイスなどのコマンド ライン線形化ツールを使用している場合は、Name
と Value
のフィールドをもつ構造体を使用してパラメーター サンプルを指定します。モデル線形化器アプリまたは制御システム調整器アプリでは、グラフィカル インターフェイスを使用して対話形式でパラメーター サンプルを指定します。
サンプリング可能なパラメーター
モデル パラメーターは、その値がモデル ワークスペース、MATLAB® ワークスペース、またはデータ ディクショナリにある変数により与えられる場合、変化させることができます。変化させるパラメーターがすべて調整可能である場合、変化させるパラメーター値に対し伝達関数を計算するために、線形化ツールで必要なモデルのコンパイルは 1 回のみです。この効率性は、繰り返しコンパイルすると計算量の多くなるモデルには特に有益です。
詳細については、パラメーター値を変化させたときのバッチ線形化の効率性を参照してください。
多次元パラメーター グリッド
一度に複数のパラメーターを変化させる場合は、より高次元のパラメーター グリッドを生成します。たとえば、2 つのパラメーターを変化させるとパラメーター行列が、3 つのパラメーターを変化させると 3 次元パラメーター グリッドが生成されます。次のパラメーター グリッドについて考えます。
ここでは、3 つのパラメーター a、b および c の値を変化させます。サンプルは 3 x 4 x 5 のグリッドを形成します。モデルをバッチ線形化すると、ss
モデル配列 sys
がバッチ処理の結果になります。同様に、モデルをバッチ平衡化すると、操作点オブジェクトの配列が返されます。
コマンド ラインでのパラメーターの変化
linearize
、slLinearizer
または slTuner
でバッチ線形化用に単一のパラメーターの値を変化させるには、パラメーター グリッドを 2 つのフィールドをもつ構造体として指定します。Name
フィールドには、パラメーターを指定するワークスペース変数の名前が含まれます。Value
フィールドには、線形化中にそのパラメーターが取る値のベクトルが含まれます。
たとえば、Watertank
モデルには、MATLAB ワークスペース変数として定義されている a
、b
および A
の 3 つのパラメーターがあります。次のコマンドでは、単一のパラメーター A
のパラメーター グリッドを指定します。
param.Name = 'A';
param.Value = Avals;
ここで、Avals
は A
のサンプル値を指定する配列です。
次の表は、パラメーター サンプルを指定するいくつかの一般的な方法を挙げています。
パラメーター サンプルの間隔の種類 | パラメーター サンプルの指定方法 |
---|---|
与えられた範囲に等間隔に配置された値 | param.Value = [Amin:1:Amax] |
与えられた範囲に線形に配置された値 | param.Value = linspace(Amin,Amax,N) |
与えられた範囲に対数的に配置された値 | param.Value = logspace(Amin,Amax,N) |
乱数値 | param.Value = rand(1,N) |
カスタム ベクトル | param.Value = [value1,value2,...,valueN] |
モデルによって使用される変数がスカラー値でない場合は、スカラー数値に関連付けられた表現としてパラメーター名を指定します。たとえば、Kpid
は PID ゲインのベクトルであるとします。ベクトルの 1 番目のエントリ Kpid
は、モデル内のブロックでゲインの値として使用されます。次のコマンドを使用して、ベクトル Kpvals
で与えられた値を使用するゲインを変化させます。
param.Name = 'Kpid(1)';
param.Value = Kpvals;
param
構造体を作成したら、以下を実行します。
linearize
に、param
入力引数としてこれを渡します。slLinearizer
インターフェイスまたはslTuner
インターフェイスのParameters
プロパティとしてこれを設定します。
linearize
、slLinearizer
または slTuner
によるバッチ線形化で複数のパラメーターの値を変化させるには、パラメーター サンプルを構造体配列として指定します。構造体には、値を変化させる各パラメーターのエントリがあります。構造体配列の各要素に Name
と Value
のフィールドがあります。
パラメーターの Value
フィールドには、任意の次元の配列を指定できます。ただし、Value
フィールドのサイズはすべてのパラメーターで同じでなければなりません。すべてのパラメーターの対応する配列エントリ ("パラメーター グリッド点" とも呼ばれる) は、目的のパラメーターの組み合わせにマップされなければなりません。ソフトウェアがモデルを線形化する際に、グリッド点ごとに線形化 (ss
モデル) を計算します。それぞれの線形化されたモデルの SamplingGrid
プロパティに、モデルが対応するパラメーター グリッド点に関する情報がソフトウェアにより入力されます。
フル グリッドの指定
モデルに、値を変化させる 2 つのパラメーター a と b があるとします。
a と b のそれぞれの組み合わせでモデルを線形化できます。これは、"フル グリッド" とも呼ばれます。
ndgrid
を使用して方形のパラメーター グリッドを作成します。
a1 = 1; a2 = 2; a = [a1 a2]; b1 = 3; b2 = 4; b = [b1 b2]; [A,B] = ndgrid(a,b)
A = 1 1 2 2 B = 3 4 3 4
パラメーター グリッドを指定する構造体配列 params
を作成します。
params(1).Name = 'a'; params(1).Value = A; params(2).Name = 'b'; params(2).Value = B;
一般的に、N パラメーターのフル グリッドを指定するには、ndgrid
を使用して N グリッド配列を取得します。
[P1,...,PN] = ndgrid(p1,...,pN);
ここで、p1
,...,pN
はパラメーター サンプル ベクトルです。
1 行 N 列の構造体配列を作成します。
params(1).Name = 'p1'; params(1).Value = P1; ... params(N).Name = 'pN'; params(N).Value = PN;
フル グリッドのサブセットの指定
モデルが複素数の場合、あるいは多数のパラメーター値を変化させる場合、フル グリッドのモデルを線形化すると計算量が多くなる場合があります。この場合、表のようなアプローチを使用してフル グリッドのサブセットを指定できます。フル グリッドの指定の例を使用して、次の a と b の組み合わせでモデルを線形化するとします。
このパラメーター グリッドを指定する構造体配列 params
を作成します。
A = [a1 a1]; params(1).Name = 'a'; params(1).Value = A; B = [b1 b2]; params(2).Name = 'b'; params(2).Value = B;
グラフィカル ツールでのパラメーターの変化
バッチ線形化で変化させるパラメーターを選択するには、[パラメーターの変化] ドロップダウン リストで [変化するパラメーターの選択]
をクリックします。モデル線形化器では、[パラメーターの変化] ドロップダウン リストは [線形解析] タブにあります。制御システム調整器では、[パラメーターの変化] ドロップダウン リストは [Control System] タブにあります。
[パラメーターの変化] タブで [パラメーターの管理] をクリックします。[モデル変数の選択] ダイアログ ボックスで、変化させる変数を選択します。テーブルには、調整可能かどうかにかかわりなく、モデルで使用される MATLAB ワークスペースおよびモデル ワークスペースのすべての変数がリストされます。
モデルに数多くの変数が含まれる場合は、[変数名でフィルター] フィールドに入力して、リストをフィルター処理します。[次で使用] 列には、モデル内でその変数を使用するブロックがすべてリストされます。変数を使用するブロックをモデル内で強調表示するには、対応するブロックの名前をクリックします。
変化させるために選択する変数は、データ型に double
を使用するスカラーの数値をもっていなければなりません。変数の値がこれらの条件を満たしていない場合は、以下の手法を使用します。
行列変数または配列変数の単一の要素を変化させるには、スカラー数値に関連付けられた表現を [既存のパラメーターと共にインデックス/式を使用して (例: A(3) または s.x) 新規パラメーターを追加] フィールドに入力して Enter キーを押します。たとえば、
A
がベクトルの場合はA(3)
と入力して、A
の 3 番目のエントリを指定します。A
が構造体であり、変化させるスカラー パラメーターがその構造体のValue
フィールドである場合は、A.Value
と入力します。インデックス付き変数が変数リストに表示されます。double
以外の数値データ型の変数を使用するには、変数をSimulink.Parameter
オブジェクトに変換します。これによりパラメーター値がそのデータ型から分離されます。Value
プロパティを既定のdouble
型の数に設定し、DataType
プロパティを使ってデータ型を指示します。Simulink.Parameter
オブジェクトの値を使うには、Value
プロパティを指定します。式myParamObj.Value
を入力します。構造体のフィールドを使用するには、「
myStruct.PID.P1
」と入力します。Simulink.Parameter
オブジェクトに構造体を保存する場合は、myStruct.Value.PID.P1
と入力します。cell 配列の 1 つのセルを使用するには、
myCells{3}
と入力します。
変数の選択後、[OK] をクリックします。選択した変数が [パラメーターの変化] テーブルに表示され、パラメーターの現在の値に基づく初期サンプルの値が示されます。
単一のパラメーターを変化させる場合、テーブルの各行は、モデルの線形化に使う単一のパラメーター値に対応します。
複数のパラメーターを変化させる場合は次のようになります。
テーブルの各列は、選択された 1 つの変数に対応します。
テーブルの各行は、モデルの線形化に使うパラメーター値の完全なセットを表現しています。
テーブルを使用して、パラメーター値を手動で指定するか、値を自動で生成します。モデルを線形化する際、テーブルにある行の数だけ線形モデルが計算されます。
パラメーター値の指定後に [線形解析] タブに戻ってモデルを線形化すると、モデル線形化器により、[パラメーターの変化] テーブルにリストされているすべてのパラメーター値でモデルが線形化されます。
メモ
制御システム調整器でパラメーターの変化についての指定が終了したら、引き続き調整を行う前に、変更を適用しなければなりません。これを行うには、[パラメーターの変化] タブで [適用] をクリックします。制御システム調整器は指定したパラメーターの変化を適用し、モデルを再線形化して、既存のすべてのプロットを更新します。
手動によるパラメーター値の指定
パラメーター値を手動で指定するには、テーブルに行を追加します。 [行の挿入] をクリックして、
[上に行を挿入]
か [下に行を挿入]
のいずれかを選択します。
次に、必要に応じてテーブルの値を編集します。たとえば、次のテーブルではパラメーターと値の 4 つのペア、(Ki2
,Kp2
) = (3.5,1)、(3.5,2)、(5,1)、(5,2) が指定されています。
パラメーター値の自動生成
値を自動生成するには、[パラメーターの変化] タブで [値の生成] をクリックします。
[パラメーター値の生成] ダイアログ ボックスで、グリッド化の方法として次のいずれかを選択します。
すべての組み合わせ — [開始値] テーブルで指定した値の可能な組み合わせをすべて生成します。
最小 - 最大の組み合わせ — [開始値] テーブルで指定した各ベクトルの最小値と最大値のみを使用してパラメーター サンプルを生成します。
ペアごとの組み合わせ — [開始値] テーブルで指定したベクトルの値のペアごとの組み合わせのみを使用してパラメーター サンプルを生成します。この方法が使用可能なのは、テーブル内のすべてのベクトルが同じ次元である場合に限られます。
[パラメーター値の生成] ダイアログ ボックスの [開始値] テーブルで、パラメーター グリッドの生成のための基本値を指定します。各変数に与える基本値の表現を [値] 列に入力します。次の表は、パラメーター サンプルを指定するいくつかの一般的な方法を挙げています。
パラメーター サンプルの間隔の種類 | パラメーター サンプルの指定方法 |
---|---|
与えられた範囲に等間隔に配置された値 | [Amin:1:Amax] |
与えられた範囲に線形に配置された値 | linspace(Amin,Amax,N) |
与えられた範囲に対数的に配置された値 | logspace(Amin,Amax,N) |
乱数値 | rand(1,N) |
カスタム ベクトル | [value1,value2,...,valueN] |
たとえば、次の図は、Kp1 = [0.1,0.15,0.2,0.25,0.3]
と Kp2 = [0.03,0.04,0.05]
の可能なすべての組み合わせについてパラメーターと値のペアを生成する設定を示しています。
[パラメーターの変化] テーブルにある値を生成値で置き換えるには、[前の値を上書き] を選択します。生成値を既存の値に追加するには、[前の値に追加] を選択します。
[OK] をクリックします。
参考
ndgrid
| linspace
| logspace
| rand
| slLinearizer
| slTuner
| linearize