Main Content

fourierBasis

調整可能なゲイン曲面のフーリエ基底関数

説明

基底関数の拡張を使用して、ゲイン スケジュール コントローラーを調整するためのゲイン曲面をパラメーター化します。fourierBasis は、スケジューリング変数によって周期的に異なるゲイン曲面 (角度位置によって変化するゲインなど) をパラメーター化するための周期的なフーリエ級数展開を生成します。fourierBasis の出力を使用して、tunableSurface で調整可能なゲイン曲面を作成します。

shapefcn = fourierBasis(N) は、eiπx の最初の N の高調波を評価する関数を生成します。

F(x)=[cos(πx),sin(πx),cos(2πx),sin(2πx),,cos(Nπx),sin(Nπx)].

F は shapefcn で表される関数です。F 項は、周期的に変化するゲイン K(x) のフーリエ級数展開における最初の 2*N 基底関数であり、K(–1) = K(1) です。この展開は次のようになります。

K(x)=a02+k{akcos(kπx)+bksin(kπx)}.

shapefcn = fourierBasis(N,nvars) は、領域 [–1,1]nvars の周期関数の nvars 次元フーリエ基底を生成します。この基底は、各次元に N の高調波をもつ nvars フーリエ基底の外積です。結果の関数 shapefcnnvars 入力引数を受け取り、(2*N+1)^(nvars-1)-1 エントリをもつベクトルを返します。

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

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

すべて折りたたむ

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

shapefcn = fourierBasis(2);

shapefcn は 1 変数関数に対するハンドルであり、この関数は x = [–1,1] において周期関数の最初の 2 つの高調波に対応する 4 つの値からなる配列を返します。

F(x)=[cos(πx),sin(πx),cos(2πx),sin(2πx)].

shapefcntunableSurface への入力引数として使用し、次の形式のゲイン曲面を定義します。

K(x)=K0+K1cos(πx)+K2sin(πx)+K3cos(2πx)+K4sin(2πx).

変数 x は、調整可能な曲面のスケジューリング変数を正規化したものです。fourierBasis によって作成される基底関数は正規化された変数を扱うため、ゲイン スケジュール システムは、エンドポイントの値によって厳密に 1 つの周期が区切られている設計点を使用しなければなりません。たとえば、次の設計点を使用していると仮定します。

alpha = [-7,-4,-1,2,5];
domain = struct('alpha',alpha);
K = tunableSurface('K',0,domain,shapefcn);

領域の正規化では、ソフトウェアはゲイン曲面 Kalpha において周期的であり、K(-7) = K(5) を満たすと仮定します。

領域 [-1,1]N で、x および y の周期関数のための 2 次元フーリエ基底を作成します。基底関数は x 次元および y 次元の両方において、3 番目の高調波まで上がることになります。

F2D = fourierBasis(3,2);

この関数は 2 つのベクトルの外積です。

x = fourierBasis(3);
y = fourierBasis(3);

同様に、ndBasis を使用して外積を取得することもできます。

F = fourierBasis(3);
F2D = ndBasis(F,F);

F によって返されるベクトルの値には、sin(πx)cos(πy)sin(3πx)cos(2πy) などのクロス項が含まれています。

入力引数

すべて折りたたむ

フーリエ展開の高調波の数。正の整数で指定します。

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

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

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

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

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

例: {'alpha','V'}

出力引数

すべて折りたたむ

フーリエ展開。関数ハンドルとして指定します。shapefcnnvars によって指定された変数の数を入力引数として受け取ります。各入力変数の区間 [–1,1] で定義された、これらの変数内の多項式のベクトルを返します。shapefcn を使用してゲイン曲面を作成する場合、tunableSurface はベクトルに含まれる各多項式の項の調整可能な係数を自動的に生成します。

ヒント

  • ゲイン曲面 K が周期 P のスケジューリング変数 x において周期的である場合、fourierBasis の周期 P = 2 との整合性を確実にするため、K.Normalization.InputScaling の対応するエントリが P/2 に設定されていることを確認してください。既定の正規化を使用する場合、この要件を満たすには、K.SamplingGrid の x 値が厳密に 1 つの周期 [a, a+P] をカバーしていなければなりません。詳細については、tunableSurfaceNormalization プロパティを参照してください。

バージョン履歴

R2015b で導入