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を参照してください)。
最後のセクションは、ゲイン曲面の多項式のすべての項を合計することによりゲインを計算します。
入力引数
調整可能なゲイン曲面。tunableSurface オブジェクトとして指定します。
出力引数
ゲイン曲面の生成されたコード。文字配列として返されます。コードには、GS のスケジューリング変数 x1_,x2_,...,xN_ からゲインを計算する関数 Gain_ = fcn(x1_,x2_,...,xN_) が含まれています。ゲインをスケジューリング変数に関連付ける式とその係数、およびスケジューリング変数の正規化はすべて GS から取得され、コードはその後 TS を参照せずに実行できます。返された関数には、調整したゲイン スケジュールをハードウェアへ実装する場合など、追加のコード生成に使用できるように %#codegen 命令が含まれています。
writeBlockValue を使用して slTuner インターフェイスから MATLAB Function ブロックに調整後のゲイン曲面の係数を書き込む場合、生成されたこの MATLAB コードが使用されます。
バージョン履歴
R2017b で導入
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)