Включите код MATLAB в качестве комментариев в сгенерированный код

Если у вас есть Simulink® Coder™ можно включить MATLAB® исходный код как комментарии в коде, сгенерированном для блока MATLAB Function. Включение этой информации в сгенерированный код позволяет:

  • Коррелируйте сгенерированный код с исходным кодом.

  • Поймите, как сгенерированный код реализует ваш алгоритм.

  • Оцените качество сгенерированного кода.

Когда вы выбираете параметр MATLAB source code as comments, сгенерированный код включает:

  • Исходный код как комментарий сразу после тега трассируемости. Когда вы включаете трассируемость и генерируете код для ERT-целей (требует Embedded Coder®), теги трассируемости являются гиперссылками на исходный код. Для получения дополнительной информации смотрите Использование трассируемости в Блоках MATLAB function.

    Для примеров и информации о местоположении комментариев в сгенерированном коде смотрите Расположение комментариев в Сгенерированном коде.

  • Текст справки по функции в теле функции в сгенерированном коде. Текст справки по функции является первым комментарием после подписи функции MATLAB. Он предоставляет информацию о возможностях функции и о том, как ее использовать.

    Примечание

    С помощью Embedded Coder можно также включить текст справки по функции в сгенерированный баннер функции кода. Для получения дополнительной информации смотрите Включить комментарии пользователя MATLAB в Сгенерированный код.

Включите код MATLAB в качестве комментариев в сгенерированный код

Чтобы включить исходный код MATLAB в качестве комментариев в код, сгенерированный для блока MATLAB Function:

  1. На вкладке C Code нажмите Configuration Parameters.

  2. На панели Code Generation > Comments выберите MATLAB source code as comments и нажмите Apply.

Расположение комментариев в сгенерированном коде

Комментарии, содержащие исходный код, появляются после тега трассируемости в сгенерированном коде следующим образом.

/* '<S2>:1:18' for y = 1 : 2 : (HEIGHT-4) */
Выбор параметра Stateflow object comments генерирует комментарий трассируемости '<S2>:1:18'. Выбор параметра MATLAB source code as comments генерирует 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);

Комментарий кода С

/* 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

Код с комментариями

/* 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 заголовок оператора непосредственно предшествует сгенерированному коду, который реализует заголовок. Этот комментарий появляется после добавленных вами комментариев, которые предшествуют сгенерированному коду.

Код MATLAB

function y = forstmt(u) 
%#codegen
y = 0;
for i=1:u
    y = y + 1;
end

Комментарий кода С

/* 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 в код, сгенерированный для блока MATLAB Function.

  1. На вкладке C Code нажмите Configuration Parameters.

  2. На панели Code Generation > Comments выберите комментарии пользователя MATLAB и нажатия кнопки Apply.

Ограничения исходного кода MATLAB как комментарии

Для включения исходного кода MATLAB в качестве комментариев, блок MATLAB Function имеет следующие ограничения:

  • Вы не можете включать исходный код MATLAB в качестве комментариев для:

    • MathWorks® функции тулбокса

    • P-код

    • Цели симуляции

    • Stateflow® Truth Table блоки

  • Внешний вид или расположение комментариев могут варьироваться в зависимости от следующих условий:

    • Комментарии все еще могут появиться в сгенерированном коде, даже если код реализации исключен, например, из-за постоянного складывания.

    • Комментарии могут быть исключены из сгенерированного кода, если полная функция или блок кода исключены.

    • Для определенных оптимизаций комментарии могут быть отделены от сгенерированного кода.

    • Сгенерированный код включает юридически необходимые комментарии из исходного кода MATLAB, даже если вы не принимаете решение включать комментарии исходного кода в сгенерированный код.

Похожие темы