evalSurf
特定の設計点でのゲイン曲面の評価
説明
例
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
入力引数
評価するゲイン曲面。tunableSurface オブジェクトとして指定します。GS は任意の数のスケジューリング変数をもつことができ、スカラー値または配列値のいずれかです。
ゲイン曲面を評価する点。配列として指定します。点はスケジューリング変数の値を組み合わせたものです。X の次元は N 行 M 列です。ここで、M は GS 内のスケジューリング変数の数であり、N は GS を評価する点の数です。したがって、X はゲインを評価するスケジューリング変数の値の組み合わせをリストしたものです。たとえば、GS には 2 つのスケジューリング変数 (a および b) があり、10 組 (a,b) のペアで GS を評価すると仮定します。この場合、X は (a,b) をリストする 10 行 2 列の配列です。X の点は GS.SamplingGrid の設計点と一致している必要はありません。
ゲイン曲面を評価するスケジューリング変数の値。M 配列として指定します。ここで、M は GS 内のスケジューリング変数の数です。たとえば、GS に 2 つのスケジューリング変数 (a および b) がある場合、X1 および X2 はそれぞれ a および b の値のベクトルです。ゲイン曲面はグリッド ndgrid(X1,X2) で評価されます。このグリッドの値は GS.SamplingGrid の設計点と一致している必要はありません。
出力配列のレイアウト。'gridfirst' または 'gridlast' のいずれかで指定します。
'gridfirst'—GVのサイズは[N1,...,NM,Ny,Nu]で、最初がグリッドの次元、最後がゲインの次元です。このレイアウトはNy = Nu = 1であるスカラー ゲインの本来の形式です。'gridlast'—GVのサイズは[Ny,Nu,N1,...,NM]で、最初がゲインの次元です。これは、行列値のゲインのより読みやすい形式です。
出力引数
ゲイン値。配列として返されます。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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)