Main Content

getGoal

指定された設計点で可変調整目標を評価する

説明

複数の操作条件のコントローラーを調整する場合、varyingGoal で調整目的を設計点の関数として調整できます。getGoal を使用して、特定の設計点で、またはサンプリング変数の特定の値で可変目標を評価します。

TG = getGoal(VG,'index',k) は、k 番目の設計点における実効調整目標を返します。絶対インデックス k は、可変目標 VGParameters プロパティにあるパラメーター値の配列を基準とします。VG.SamplingGrid を指定した場合、k はそのプロパティの設計点のグリッドを基準とします。

TG = getGoal(VG,'index',k1,k2,...) は、座標 (k1,k2,...) の設計点の実効調整目標を返します。この座標は VG.ParametersVG.SamplingGrid の多次元配列のインデックスです。設計グリッドに複数のスケジューリング変数が含まれる場合には、この構文が有用です。

TG = getGoal(VG,'value',x1,x2,...) は、スケジューリング変数の値が (x1,x2,...) である設計点の実効調整目標を返します。この構文は、VG.SamplingGrid に設計点を指定した場合にのみ使用します。たとえば、VG.SamplingGrid に設計点 (a,b) のグリッドを指定する場合、TG = getGoal(VG,'value',-1,3) は設計点 (a,b) = (-1,3) の調整目標を返します。(x1,x2,...)VG.SamplingGrid のどの点にも一致しない場合、getGoal は相対的な最近傍点を返します。

すべて折りたたむ

次の 5 行 5 列の設計点グリッドを使用してコントローラーを調整すると仮定します。

[alpha,V] = ndgrid(linspace(0,20,5),linspace(700,1300,5));

設計点のグリッド全体で変化する 'u' という信号でのゲイン余裕と位相余裕を指定する、可変調整目標を作成します。

[GM,PM] = ndgrid(linspace(7,20,5),linspace(45,70,5));
FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);
VG = varyingGoal(FH,GM,PM);

グリッドを使用して VGSamplingGrid プロパティを指定します。

VG.SamplingGrid = struct('alpha',alpha,'V',V);

この可変設計目標を (alpha,V) = (5,1150) で評価します。この点は 2 番目の alpha 値と 4 番目の V 値です。したがって、varyingGoal のインデックスとして (k1,k2) = (2,4) を使用できます。

TGi = getGoal(VG,'index',2,4);

調整目標を求める特定の (alpha,V) 値がわかっているので、インデックスの代わりにこれらの値を使用できます。

TGv = getGoal(VG,'value',5,1150)
TGv = 
  Margins with properties:

      GainMargin: 10.2500
     PhaseMargin: 63.7500
    ScalingOrder: 0
           Focus: [0 Inf]
        Location: {'u'}
          Models: 17
        Openings: {0x1 cell}
            Name: ''

入力引数

すべて折りたたむ

可変調整目標。varyingGoal オブジェクトとして指定します。VG は、ゲイン スケジュール調整用の設計点グリッドにおける調整目標の変動を捉えます (tunableSurface を参照)。

設計点グリッドのインデックス。整数として指定します。1 つの整数インデックス k または複数のインデックス k1,k2,... を指定できます。

単一のインデックス k を指定した場合、getGoalkVG.Parameters のパラメーター配列または設計点を指定する VG.SamplingGrid の構造体の線形インデックスとして扱います。

  • VG が 1 次元サンプリング グリッド (1 つのスケジューリング変数) 上で変化する場合、TG = getGoal(VG,'index',k) は、VG.Parametersk 番目のエントリの調整目標を返します。

  • VG が 2 つ以上のスケジューリング変数によって変化する場合、TG = getGoal(VG,'index',k) は、グリッド内の線形インデックスで定義される k 番目のエントリを返します (配列インデックス付けを参照)。

複数のインデックス k1,k2,... を指定した場合、getGoal は、これを VG.Parameters または VG.SamplingGrid の多次元配列のインデックスとして扱います。

設計点での変数値。スカラーとして指定します。入力 x1,x2,... を使用してスケジューリング変数値の特定セットの調整目標を取得します。システムに存在するスケジューリング変数と同じ数の値を指定してください。たとえば、操作条件が 2 つのスケジューリング変数 (a,b) で記述される場合、調整目標を抽出する (a,b) の値を指定するには、(x1,x2) を使用します。

出力引数

すべて折りたたむ

指定された設計点での調整目標。TuningGoal オブジェクトとして返されます。調整目標パラメーターのいずれかが指定の設計点で NaN である場合、TG = [] です (varyingGoal を参照)。

バージョン履歴

R2017b で導入