Main Content

polyBasis

調整可能なゲイン曲面の多項式基底関数

説明

基底関数の拡張を使用して、ゲイン スケジュール コントローラーを調整するためのゲイン曲面をパラメーター化します。polyBasis は任意の数のスケジューリング変数で標準的な多項式展開を生成します。結果の関数を使用して、tunableSurface をもつ調整可能なゲイン曲面を作成します。

shapefcn = polyBasis('canonical',degree) は入力変数 x のべき乗を degree まで評価する関数を生成します。

shapefcn(x)=[x,x2,,xorder].

shapefcn = polyBasis('chebyshev',degree) はチェビシェフ多項式を degree まで評価する関数を生成します。

shapefcn(x)=[T1(x),,Torder(x)].

チェビシェフ多項式は以下によって再帰的に定義されます。

T0(x)=1;T1(x)=x;Ti+1(x)=2xTi(x)Ti1(x).

shapefcn = polyBasis(___,nvars) は、nvars の 1 次多項式の展開の外積を求めることで nvars 次元の多項式の展開を生成します。結果の関数 shapefcnnvars 入力引数を受け取り、(degree+1)^(nvars-1) エントリをもつベクトルを返します。たとえば、nvars = 3 および正準多項式である場合、以下のようになります。

shapefcn(x,y,z)=[xiyjzk:0i,j,korder,i+j+k>0].

したがって、2 つのスケジューリング変数で双一次関数を指定するには、以下を使用します。

shapefcn = polyBasis('canonical',1,2);
結果の関数を tunableSurface とともに使用すると、次の形式の変数ゲインが定義されます。

K(x,y)=K0+K1x+K2y+K3xy.

ここで、x および y は正規化されたスケジューリング変数であり、その値は範囲 [–1,1] 内にあります (詳細については、tunableSurface を参照してください。)

拡張が変数ごとに異なる複数のスケジューリング変数で基底関数を指定するには、ndBasis を使用します。

shapefcn = polyBasis(___,varnames) は変数名を指定します。上記の任意の構文とともにこの構文を使用して、shapefcn の変数名を指定します。変数名を使用すると、tunableSurface オブジェクトの表示や、codegen を使って生成した MATLAB® コードの可読性が高まります。

すべて折りたたむ

1 つのスケジューリング変数の三次関数として変化するゲインの基底関数を作成します。

shapefcn = polyBasis('canonical',3);

shapefcn は、その入力の最初の 3 つのべき乗に対応する値の配列を返す 1 変数関数へのハンドルです。つまり、shapefcn(x) = [x x^2 x^3] です。たとえば、shapefcn(-0.2) を調べます。

x = -0.2;
shapefcn(x)
ans = 1×3

   -0.2000    0.0400   -0.0080

x = -0.2 に対し [x x^2 x^3] を評価すると同じ結果が返されます。

[x x^2 x^3]
ans = 1×3

   -0.2000    0.0400   -0.0080

shapefcntunableSurface の入力引数として使用し、多項式ゲイン曲面を定義します。この shapefcn は次を使用することと等価です。

shapefcn = @(x) [x x^2 x^3];

1 変数のチェビシェフ多項式である一連の基底関数を 3 次まで作成します。

shapefcn = polyBasis('chebyshev',3);

双一次のゲイン曲面 [x,y,xy] の基底関数を作成します。変数に名前を付けて、関数を読みやすくします。

shapefcn = polyBasis('canonical',1,2,{'x','y'})
shapefcn = function_handle with value:
    @(x,y)utFcnBasisOuterProduct(FDATA_,x,y)

特定の (x,y) のペアに対し shapefcn で返される値を確認します。

x = 0.2;
y = -0.5;
shapefcn(x,y)
ans = 1×3

    0.2000   -0.5000   -0.1000

この shapefcn は以下と等価です。

shapefcn = @(x,y)[x,y,x*y];

shapefcn の基底関数は 2 変数それぞれで 1 次です。各変数で次数の異なる一連の基底関数を作成するには、ndBasis を使用します。

入力引数

すべて折りたたむ

多項式展開の次数。正の整数として指定します。

スケジューリング変数の数。正の整数で指定します。

生成された関数 shapefcn の変数の名前。次のいずれかとして指定します。

  • 文字ベクトル (単変数基底関数の場合)。

  • 文字ベクトルの cell 配列 (多変数基底関数の場合)。

varnames を指定しない場合、shapefcn の変数名は {'x1','x2',...} になります。

例: {'alpha','V'}

出力引数

すべて折りたたむ

多項式展開。関数ハンドルとして指定します。shapefcnnvars によって指定された変数の数を入力引数として受け取ります。関数は、これらの変数の多項式を指定された次数まで評価して、結果の値をベクトルで返します。shapefcn を使用してゲイン曲面を作成する場合、tunableSurface はベクトルに含まれる各多項式の項の調整可能な係数を自動的に生成します。

バージョン履歴

R2015b で導入