evalSurf
特定の設計点でのゲイン曲面の評価
説明
例
指定された値での 1 次元ゲイン曲面の評価
1 つのスケジューリング変数をもつゲイン曲面を作成し、リストされたスケジューリング変数の値でゲインを評価します。
tunableSurface
を使用してゲイン曲面を作成するときは、ゲイン係数を調整する設計点を指定します。これらの点は、一般的には、プラントをサンプリングまたは線形化したスケジューリング変数の値になります。ただし、指定された設計点とは別のブレークポイントをもつルックアップ テーブルとしてゲイン曲面を実装する場合もあります。この例では、一連の設計点をもつゲイン曲面を作成し、それとは別の一連のスケジューリング変数の値を使用して曲面を評価します。
1 つのスケジューリング変数 t の二次関数として変化するスカラー ゲインを作成します。t = 0 から t = 40 まで、5 秒ごとにプラントを線形化してあると仮定します。
t = 0:5:40; domain = struct('t',t); shapefcn = @(x) [x,x^2]; GS = tunableSurface('GS',1,domain,shapefcn);
一般的には、制御システムの一部として係数を調整します。この例では、調整する代わりに係数をゼロ以外の値に手動で設定しています。
GS = setData(GS,[12.1,4.2,2]);
別の一連の時間の値でゲイン曲面を評価します。
tvals = [0,4,11,18,25,32,39,42]; % eight values
GV = evalSurf(GS,tvals)
GV = 8×1
9.9000
10.0200
10.6150
11.7000
13.2750
15.3400
17.8950
19.1400
GV
は 8 行 1 列の配列です。tvals
および GV
を使用して、変数ゲインをルックアップ テーブルとして実装できます。
値のグリッドでのゲイン曲面の評価
これらの変数の値のグリッドで 2 つのスケジューリング変数をもつゲイン曲面を評価します。
tunableSurface
を使用してゲイン曲面を作成するときは、ゲイン係数を調整する設計点を指定します。これらの点は、一般的には、プラントをサンプリングまたは線形化したスケジューリング変数の値になります。ただし、指定された設計点とは別のブレークポイントをもつルックアップ テーブルとしてゲイン曲面を実装する場合もあります。この例では、一連の設計点をもつゲイン曲面を作成し、それとは別の一連のスケジューリング変数の値を使用して曲面を評価します。
2 つの独立変数 および V の双一次関数であるスカラー値ゲイン曲面を作成します。
[alpha,V] = ndgrid(0:1.5:15,300:30:600); domain = struct('alpha',alpha,'V',V); shapefcn = @(x,y) [x,y,x*y]; GS = tunableSurface('GS',1,domain,shapefcn);
一般的には、制御システムの一部として係数を調整します。この例では、調整する代わりに係数をゼロ以外の値に手動で設定しています。
GS = setData(GS,[100,28,40,10]);
選択した および V の値でゲインを評価します。
alpha_vec = [7:1:13]; % N1 = 7 points V_vec = [400:25:625]; % N2 = 10 points GV = evalSurf(GS,alpha_vec,V_vec);
ゲイン曲面を評価するブレークポイントは、domain
で指定された範囲内でなくてもかまいません。ただし、ゲインを評価する範囲が調整に使用された範囲から離れすぎていると、警告が表示されます。
ブレークポイントは等間隔にする必要もありません。evalSurf
は ndgrid(alpha_vec,V_vec)
によって形成されるグリッドのゲイン曲面を評価します。結果として生じる配列の次元を確認します。
size(GV)
ans = 1×2
7 10
既定では、グリッドの次元 N1-by-N2
が配列の最初で、その後にゲインの次元が続きます。GS
はスカラー値ゲインであるため、GV
の次元は [7,10,1,1] または同等の [7,10] です。
GV
の各位置にある値は、グリッド内の対応する (alpha_vec,V_vec)
ペアで評価されたゲインです。たとえば、GV(2,3)
は (alpha_vec(2),V_vec(3))
、すなわち (8,450)
で評価されたゲインです。
配列値ゲイン曲面の評価
これらの変数の値のグリッドで、2 つのスケジューリング変数をもつアレイ値のゲイン曲面を評価します。
2 つのスケジューリング変数をもつベクトル値のゲインを作成します。
[alpha,V] = ndgrid(0:1.5:15,300:30:600); domain = struct('alpha',alpha,'V',V); shapefcn = @(x,y) [x,y,x*y]; GS = tunableSurface('GS',ones(2,2),domain,shapefcn);
初期の定数係数を ones(2,2)
に設定することで、tunableSurface
によって 2 行 2 列のゲイン行列が生成されます。この行列の各エントリは、2 つのスケジューリング変数の双一次関数である個別に調整可能なゲイン曲面です。言換えれば、ゲイン曲面は次のようになります。
ここで、係数 はそれぞれが 2 行 2 列の行列です。
一般的には、これらのゲイン曲面の係数を制御システムの一部として調整します。この例では、調整する代わりに係数をゼロ以外の値に手動で設定しています。
K0 = 10*rand(2); K1 = 10*rand(2); K2 = 10*rand(2); K3 = 10*rand(2);
tunableSurface
オブジェクトは配列値の係数を連結して 2 行 8 列の配列にすることで保存します (tunableSurface
のリファレンス ページを参照)。したがって、 のこれらの値を連結して GS
の係数を変更します。
GS = setData(GS,[K0 K1 K2 K3]);
選択されたスケジューリング変数の値でゲイン曲面を評価します。
alpha_vec = [7:1:13]; % N1 = 7 points V_vec = [400:25:625]; % N2 = 10 points GV = evalSurf(GS,alpha_vec,V_vec,'gridlast');
'gridlast'
は、ゲイン値のグリッドの次元 (7 行 10 列) が最後になるように配列 GV
を並べます。ゲイン配列自体の次元 (2 行 2 列) が最初です。
size(GV)
ans = 1×4
2 2 7 10
入力引数
GS
— ゲイン曲面
tunableSurface
オブジェクト
評価するゲイン曲面。tunableSurface
オブジェクトとして指定します。GS
は任意の数のスケジューリング変数をもつことができ、スカラー値または配列値のいずれかです。
X
— ポイント
配列
ゲイン曲面を評価する点。配列として指定します。点はスケジューリング変数の値を組み合わせたものです。X
の次元は N 行 M 列です。ここで、M は GS
内のスケジューリング変数の数であり、N は GS
を評価する点の数です。したがって、X
はゲインを評価するスケジューリング変数の値の組み合わせをリストしたものです。たとえば、GS
には 2 つのスケジューリング変数 (a
および b
) があり、10 組 (a
,b
) のペアで GS
を評価すると仮定します。この場合、X
は (a
,b
) をリストする 10 行 2 列の配列です。X
の点は GS.SamplingGrid
の設計点と一致している必要はありません。
X1,...,XM
— スケジューリング変数の値
配列
ゲイン曲面を評価するスケジューリング変数の値。M 配列として指定します。ここで、M は GS
内のスケジューリング変数の数です。たとえば、GS
に 2 つのスケジューリング変数 (a
および b
) がある場合、X1
および X2
はそれぞれ a
および b
の値のベクトルです。ゲイン曲面はグリッド ndgrid(X1,X2)
で評価されます。このグリッドの値は GS.SamplingGrid
の設計点と一致している必要はありません。
gridflag
— 出力配列のレイアウト
'gridfirst'
(既定値) | 'gridlast'
出力配列のレイアウト。'gridfirst'
または 'gridlast'
のいずれかで指定します。
'gridfirst'
—GV
のサイズは[N1,...,NM,Ny,Nu]
で、最初がグリッドの次元、最後がゲインの次元です。このレイアウトはNy = Nu = 1
であるスカラー ゲインの本来の形式です。'gridlast'
—GV
のサイズは[Ny,Nu,N1,...,NM]
で、最初がゲインの次元です。これは、行列値のゲインのより読みやすい形式です。
出力引数
GV
— ゲイン値
配列
ゲイン値。配列として返されます。GV
には、X
または X1,...,XM
で指定された点 (スケジューリング変数の値) で評価されたゲインが含まれています。GV
のサイズは、GS
内のスケジューリング変数の数、GS
によって定義されるゲインの I/O 次元および gridflag
の値によって異なります。
配列 X
で指定された N
個の点のリストでゲインを計算する場合、GV
のサイズは [N,Ny,Nu]
です。ここで、[Ny,Nu]
はゲインの I/O 次元です。たとえば、GS
は 2 つのスケジューリング変数 (a
および b
) をもつスカラー ゲイン曲面であり、X
は 10 組の (a,b)
のペアを含む 10 行 2 列の配列であると仮定します。GV
は 10 個の値の列ベクトルです。
ベクトル X1,...,XM
で指定されたグリッドのゲインを計算する場合、GV
の次元は gridflag
の値に応じて異なります。
gridflag = 'gridfirst'
(既定) —GV
のサイズは[N1,...,NM,Ny,Nu]
です。各Ni
はXi
の長さ、つまり i 番目のスケジューリング変数の値の数です。たとえば、GS
は 2 つのスケジューリング変数 (a
およびb
) をもつスカラー ゲイン曲面であり、X1
およびX2
はそれぞれ 4 個のa
値と 5 個のb
値のベクトルであると仮定します。GV
のサイズは [4,5,1,1] または同等の [4,5] です。または、GS
が 3 出力 2 入力のベクトル値ゲインの場合、GV
のサイズは [4,5,3,2] です。gridflag = 'gridlast'
—GV
のサイズは[Ny,Nu,N1,...,NM]
です。たとえば、GS
は 2 つのスケジューリング変数 (a
およびb
) をもつスカラー ゲイン曲面であり、X1
およびX2
はそれぞれ 4 個のa
値と 5 個のb
値のベクトルであると仮定します。GV
のサイズは [1,1,4,5] です。または、GS
が 3 出力 2 入力のベクトル値ゲインの場合、GV
のサイズは [3,2,4,5] です。
ヒント
バージョン履歴
R2015b で導入
参考
tunableSurface
| viewSurf
| getData
| setData
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)