生成コードに MATLAB コードをコメントとして含める
Simulink® Coder™ がある場合、MATLAB Function ブロックに対して生成されたコードに MATLAB® ソース コードをコメントとして含めることができます。生成コードにこれらの情報を含めることにより、以下が可能になります。
生成コードのソース コードとの相互関連付け。
生成コードにおけるアルゴリズムの実装の理解。
生成コードの品質評価。
[コメントとして MATLAB ソース コードを含める] パラメーターを選択した場合に生成されるコードには以下が含まれます。
トレーサビリティ タグの直後のコメントとしてのソース コード。トレーサビリティを有効にして ERT ターゲットのコードを生成すると (Embedded Coder® が必要)、トレーサビリティ タグはソース コードにハイパーリンクされます。詳細については、Use Traceability in MATLAB Function Blocksを参照してください。
生成されたコード内でのコメントの場所の例と詳細については、生成コード内でのコメントの位置を参照してください。
生成コードの関数本文内の関数のヘルプ テキスト。関数のヘルプ テキストは、MATLAB 関数シグネチャの後の最初のコメントです。関数の機能と使い方についての情報を提供します。
メモ
Embedded Coder があれば、生成コードの関数バナー内に関数のヘルプ テキストを含めることもできます。詳細については、生成コードに MATLAB ユーザー コメントを含めるを参照してください。
生成コードにコメントとして 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 ユーザー コメントを選択し、[適用] をクリックします。
コメントとしての MATLAB ソース コードの制限
MATLAB ソース コードをコメントとして含める場合、MATLAB Function ブロックには以下の制限があります。
MATLAB ソース コードは、以下に対してコメントとして含めることはできません。
MathWorks® ツールボックスの関数
P コード
シミュレーション ターゲット
Stateflow®Truth Table ブロック
コメントの外観と位置は、次の条件によって異なる場合があります。
たとえば定数畳み込みなどにより実装コードが消去されていても、生成コード内にまだコメントが見つかることがあります。
関数またはコード ブロック全体が消去された場合は、コメントは生成コードから消去される場合があります。
最適化によっては、コメントが生成コードから分離される場合があります。
生成コード内にソース コードのコメントを含めることを選択しなかった場合でも、生成コードは MATLAB ソース コードからの法的に必要なコメントを含みます。