生成コードに MATLAB コードをコメントとして含める
Simulink® Coder™ がある場合、MATLAB Function ブロックに対して生成されたコードに MATLAB® ソース コードをコメントとして含めることができます。生成コードにこれらの情報を含めることにより、以下が可能になります。
生成コードのソース コードとの相互関連付け。
生成コードにおけるアルゴリズムの実装の理解。
生成コードの品質評価。
[コメントとして MATLAB ソース コードを含める] パラメーターを選択した場合に生成されるコードには以下が含まれます。
トレーサビリティ タグの直後のコメントとしてのソース コード。トレーサビリティを有効にして ERT ターゲットのコードを生成すると (Embedded Coder® が必要)、トレーサビリティ タグはソース コードにハイパーリンクされます。詳細については、Use Traceability in MATLAB Function Blocks (Embedded Coder)を参照してください。
生成されたコード内でのコメントの場所の例と詳細については、生成コード内でのコメントの位置 (Embedded Coder)を参照してください。
生成コードの関数本文内の関数のヘルプ テキスト。関数のヘルプ テキストは、MATLAB 関数シグネチャの後の最初のコメントです。関数の機能と使い方についての情報を提供します。
メモ
Embedded Coder があれば、生成コードの関数バナー内に関数のヘルプ テキストを含めることもできます。詳細については、生成コードに MATLAB ユーザー コメントを含める (Embedded Coder)を参照してください。
生成コードにコメントとして MATLAB コードを含める
MATLAB Function ブロックに対して生成されたコードに MATLAB ソース コードをコメントとして含めるには、次の手順に従います。
[C コード] タブで、[コンフィギュレーション パラメーター] をクリックします。
[コード生成]、[コメント] ペインで [コメントとして MATLAB ソース コードを含める] を選択し、[適用] をクリックします。
生成コード内でのコメントの位置
ソース コードを含むコメントは、生成コード内でトレーサビリティ タグの後に次のように挿入されます。
/* '<S2>:1:18' for y = 1 : 2 : (HEIGHT-4) */
'<S2>:1:18'
です。[コメントとして MATLAB ソース コードを含める] パラメーターを選択した場合に生成されるコメントは for y = 1 : 2 : (HEIGHT-4)
です。直線ソース コード
ソース コードを含むコメントは、ソース コード ステートメントを実装する生成コードの前に挿入されます。このコメントは、生成コードの前にある、ユーザーによって追加されたコメントの後に挿入されます。ステートメントは関数出力に割り当てられるため、コメントは生成コードから分離されます。
MATLAB コード
function [x y] = straightline(r,theta) %#codegen % Convert polar to Cartesian x = r * cos(theta); y = r * sin(theta);
コメント付きの C コード
/* MATLAB Function 'straightline': '<S1>:1' */ /* Convert polar to Cartesian */ /* '<S1>:1:4' x = r * cos(theta); */ /* '<S1>:1:5' y = r * sin(theta); */ straightline0_Y.x = straightline0_U.r * cos(straightline0_U.theta); /* Outport: '<Root>/y' incorporates: * Inport: '<Root>/r' * Inport: '<Root>/theta' * MATLAB Function Block: '<Root>/straightline' */ straightline0_Y.y = straightline0_U.r * sin(straightline0_U.theta);
if ステートメント
if
ステートメントに対するコメントは、そのステートメントを実装するコードの直前に挿入されます。このコメントは、生成コードの前にある、ユーザーによって追加されたコメントの後に挿入されます。elseif
句および else
句に対するコメントは、その句を実装するコードの直後の、その句の中のステートメントに対して生成されたコードの前に挿入されます。
MATLAB コード
function y = ifstmt(u,v) %#codegen if u > v y = v + 10; elseif u == v y = u * 2; else y = v - 10; end
コメント付きの C コード
/* MATLAB Function 'MLFcn': '<S1>:1' */ /* '<S1>:1:3' if u > v */ if (MLFcn_U.u > MLFcn_U.v) { /* Outport: '<Root>/y' */ /* '<S1>:1:4' y = v + 10; */ MLFcn_Y.y = MLFcn_U.v + 10.0; } else if (MLFcn_U.u == MLFcn_U.v) { /* Outport: '<Root>/y' */ /* '<S1>:1:5' elseif u == v */ /* '<S1>:1:6' y = u * 2; */ MLFcn_Y.y = MLFcn_U.u * 2.0; } else { /* Outport: '<Root>/y' */ /* '<S1>:1:7' else */ /* '<S1>:1:8' y = v - 10; */ MLFcn_Y.y = MLFcn_U.v - 10.0;
for ステートメント
for
ステートメント ヘッダーに対するコメントは、そのヘッダーを実装する生成されたコードの直前に挿入されます。このコメントは、生成コードの前にある、ユーザーによって追加されたコメントの後に挿入されます。
MATLAB コード
function y = forstmt(u) %#codegen y = 0; for i=1:u y = y + 1; end
コメント付きの C コード
/* MATLAB Function 'MLFcn': '<S1>:1' */ /* '<S1>:1:3' y = 0; */ rtb_y = 0.0; /* '<S1>:1:5' for i=1:u */ for (i = 1.0; i <= MLFcn_U.u; i++) { /* '<S1>:1:6' y = y + 1; */ rtb_y++;
while ステートメント
while
ステートメント ヘッダーに対するコメントは、そのステートメント ヘッダーを実装する生成されたコードの直前に挿入されます。このコメントは、生成コードの前にある、ユーザーによって追加されたコメントの後に挿入されます。
switch ステートメント
switch
ステートメント ヘッダーに対するコメントは、そのステートメント ヘッダーを実装する生成されたコードの直前に挿入されます。このコメントは、生成コードの前にある、ユーザーによって追加されたコメントの後に挿入されます。case
句および otherwise
句に対するコメントは、その句を実装する生成コードの直後の、その句の中のステートメントに対して生成されたコードの前に挿入されます。
生成コードに MATLAB ユーザー コメントを含める
MATLAB ユーザー コメントには、関数のヘルプ テキストやその他のコメントが含まれます。関数のヘルプ テキストは、MATLAB 関数シグネチャの後の最初のコメントです。関数の機能と使い方についての情報を提供します。MATLAB Function ブロックに対して生成されたコードに MATLAB ユーザー コメントを含めることができます。
[C コード] タブで、[コンフィギュレーション パラメーター] をクリックします。
[コード生成]、[コメント] ペインでMATLAB ユーザー コメント (Embedded Coder)を選択し、[適用] をクリックします。
コメントとしての MATLAB ソース コードの制限
MATLAB ソース コードをコメントとして含める場合、MATLAB Function ブロックには以下の制限があります。
MATLAB ソース コードは、以下に対してコメントとして含めることはできません。
MathWorks® ツールボックスの関数
P コード
シミュレーション ターゲット
Stateflow®Truth Table ブロック
コメントの外観と位置は、次の条件によって異なる場合があります。
たとえば定数畳み込みなどにより実装コードが消去されていても、生成コード内にまだコメントが見つかることがあります。
関数またはコード ブロック全体が消去された場合は、コメントは生成コードから消去される場合があります。
最適化によっては、コメントが生成コードから分離される場合があります。
生成コード内にソース コードのコメントを含めることを選択しなかった場合でも、生成コードは MATLAB ソース コードからの法的に必要なコメントを含みます。
関連するトピック
- モデル コンフィギュレーション パラメーター: コメント (Embedded Coder)
- Verify Generated Code by Using Code Tracing (Embedded Coder)
- Use Traceability in MATLAB Function Blocks (Embedded Coder)