codegen
調整可能なゲイン曲面の MATLAB コードを生成
説明
例
調整可能な曲面からのコードの生成
2 つのスケジューリング変数において双線形な依存関係をもつスカラー ゲインを表す調整可能な曲面を作成します。範囲が 0 ~ 15 度の alpha
と、範囲が 300 ~ 600 m/s の V
というスケジューリング変数を仮定します。調整可能な曲面は、この操作範囲内で線形に等間隔なグリッドをカバーします。
[alpha,V] = ndgrid(0:3:15,300:50:600); domain = struct('alpha',alpha,'V',V); shapefcn = @(x,y) [x,y,x*y]; GS0 = tunableSurface('K',1,domain,shapefcn);
通常は、スケジュールされたゲインを GS0
を使ってパラメーター化し、systune で曲面係数を調整します。この例では、調整する代わりに係数をゼロ以外の値に手動で設定しています。
GS = setData(GS0,[100,28,40,10]);
スカラー ゲインをスケジューリング変数の関数として計算する MATLAB コードを生成します。
code = codegen(GS)
code = 'function Gain_ = fcn(alpha_,V_) %#codegen % Type casting ZERO = zeros(1,1,'like',alpha_+V_); alpha_ = cast(alpha_,'like',ZERO); V_ = cast(V_,'like',ZERO); % Tuned gain surface coefficients Coeffs = cast([100 28 40 10],'like',ZERO); Offsets = cast([7.5 450],'like',ZERO); Scalings = cast([7.5 150],'like',ZERO); % Normalization alpha_ = (alpha_ - Offsets(1))/Scalings(1); V_ = (V_ - Offsets(2))/Scalings(2); % Compute weighted sum of terms Y = [ alpha_ , V_ , alpha_*V_ ]; Gain_ = Coeffs(1); for i=1:numel(Y) Gain_ = Gain_ + Coeffs(i+1) * Y(i); end '
結果のコードは、2 つのスケジューリング変数を受け取ってスカラー ゲインを返す関数 fcn
です。関数には、調整したゲイン スケジュールをハードウェアへ実装する場合など、追加のコード生成に使用できるように %#codegen
命令が含まれています。
関数には 4 つのセクションがあります。最初のセクションは、スケジューリング変数が確実に同じ型にキャストされるようにします。2 番目のセクションは、ソフトウェアが GS
から抽出するゲイン係数、オフセット、およびスケーリングをエンコードします。これらの値は fcn
にハードコードされていて、GS
を参照せずにゲイン曲面を計算できます。3 番目のセクションは、これらの値を使って、正規化されたスケジューリング変数を計算します (正規化の詳細については、tunableSurface
を参照してください)。
最後のセクションは、ゲイン曲面の多項式のすべての項を合計することによりゲインを計算します。
入力引数
GS
— 調整可能なゲイン曲面
tunableSurface
オブジェクト
調整可能なゲイン曲面。tunableSurface
オブジェクトとして指定します。
出力引数
code
— ゲイン曲面の生成されたコード
文字配列
ゲイン曲面の生成されたコード。文字配列として返されます。コードには、GS
のスケジューリング変数 x1_,x2_,...,xN_
からゲインを計算する関数 Gain_ = fcn(x1_,x2_,...,xN_)
が含まれています。ゲインをスケジューリング変数に関連付ける式とその係数、およびスケジューリング変数の正規化はすべて GS
から取得され、コードはその後 TS
を参照せずに実行できます。返された関数には、調整したゲイン スケジュールをハードウェアへ実装する場合など、追加のコード生成に使用できるように %#codegen
命令が含まれています。
writeBlockValue
を使用して slTuner
インターフェイスから MATLAB Function ブロックに調整後のゲイン曲面の係数を書き込む場合、生成されたこの MATLAB コードが使用されます。
バージョン履歴
R2017b で導入
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)