Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

生成コードに MATLAB コードをコメントとして含める

Simulink® Coder™ がある場合、MATLAB Function ブロックに対して生成されたコードに MATLAB® ソース コードをコメントとして含めることができます。生成コードにこれらの情報を含めることにより、以下が可能になります。

  • 生成コードのソース コードとの相互関連付け。

  • 生成コードにおけるアルゴリズムの実装の理解。

  • 生成コードの品質評価。

[コメントとして MATLAB ソース コードを含める] パラメーターを選択した場合に生成されるコードには以下が含まれます。

  • トレーサビリティ タグの直後のコメントとしてのソース コード。トレーサビリティを有効にして ERT ターゲットのコードを生成すると (Embedded Coder® が必要)、トレーサビリティ タグはソース コードにハイパーリンクされます。詳細については、Use Traceability in MATLAB Function Blocksを参照してください。

    生成されたコード内でのコメントの場所の例と詳細については、生成コード内でのコメントの位置を参照してください。

  • 生成コードの関数本文内の関数のヘルプ テキスト。関数のヘルプ テキストは、MATLAB 関数シグネチャの後の最初のコメントです。関数の機能と使い方についての情報を提供します。

    メモ

    Embedded Coder があれば、生成コードの関数バナー内に関数のヘルプ テキストを含めることもできます。詳細については、生成コードに MATLAB ユーザー コメントを含めるを参照してください。

生成コードにコメントとして MATLAB コードを含める

MATLAB Function ブロックに対して生成されたコードに MATLAB ソース コードをコメントとして含めるには、次の手順に従います。

  1. [C コード] タブで、[コンフィギュレーション パラメーター] をクリックします。

  2. [コード生成]、[コメント] ペインで [コメントとして MATLAB ソース コードを含める] を選択し、[適用] をクリックします。

生成コード内でのコメントの位置

ソース コードを含むコメントは、生成コード内でトレーサビリティ タグの後に次のように挿入されます。

/* '<S2>:1:18' for y = 1 : 2 : (HEIGHT-4) */
[Stateflow オブジェクトのコメント] パラメーターを選択した場合に生成されるトレーサビリティ コメントは '<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 ユーザー コメントを含めることができます。

  1. [C コード] タブで、[コンフィギュレーション パラメーター] をクリックします。

  2. [コード生成]、[コメント] ペインでMATLAB user commentsを選択し、[適用] をクリックします。

コメントとしての MATLAB ソース コードの制限

MATLAB ソース コードをコメントとして含める場合、MATLAB Function ブロックには以下の制限があります。

  • MATLAB ソース コードは、以下に対してコメントとして含めることはできません。

    • MathWorks® ツールボックスの関数

    • P コード

    • シミュレーション ターゲット

    • Stateflow®Truth Table ブロック

  • コメントの外観と位置は、次の条件によって異なる場合があります。

    • たとえば定数畳み込みなどにより実装コードが消去されていても、生成コード内にまだコメントが見つかることがあります。

    • 関数またはコード ブロック全体が消去された場合は、コメントは生成コードから消去される場合があります。

    • 最適化によっては、コメントが生成コードから分離される場合があります。

    • 生成コード内にソース コードのコメントを含めることを選択しなかった場合でも、生成コードは MATLAB ソース コードからの法的に必要なコメントを含みます。

関連するトピック