Main Content

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

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

  • 生成コードをソース コードに関連付けることができます。

  • 生成コードがアルゴリズムをどのように実装しているかを理解することができます。

  • 生成されたコードの品質を評価できます。

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

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

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

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

    メモ

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

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

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

  1. モデル内の [モデル化] タブで [モデル設定] をクリックします。

  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. モデル内の [モデル化] タブで [モデル設定] をクリックします。

  2. [コード生成]、[コメント] ペインでMATLAB ユーザー コメント (Embedded Coder)を選択し、[適用] をクリックします。

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

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

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

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

    • P コード

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

    • Stateflow® Truth Table ブロック

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

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

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

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

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

参考

関連するトピック