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

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

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

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

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

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

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

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

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

    Примечание

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

Как включать код MATLAB как комментарии в сгенерированном коде

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

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

Операторы switch

Комментарий для заголовка оператора switch сразу предшествует сгенерированному коду, который реализует заголовок оператора. Этот комментарий появляется после любых комментариев, что вы добавляете, что предшествуют сгенерированному коду. Комментарии для case и пункты otherwise сразу появляются после сгенерированного кода, который реализует пункт, и прежде чем код сгенерировал для операторов в пункте.

Включая пользователя MATLAB комментирует в Сгенерированном коде

Комментарии пользователя MATLAB включают функциональный текст справки и другие комментарии. Функциональный текст справки является первым комментарием после подписи функции MATLAB. Это предоставляет информацию о возможностях функции и как использовать его. Можно включать комментарии пользователя MATLAB в код, сгенерированный для блока MATLAB function.

  1. В модели выберите Simulation> Model Configuration Parameters.

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

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

Блок MATLAB function имеет следующие ограничения для включения исходного кода MATLAB как комментарии.

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

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

    • Псевдокод

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

    • Блоки Таблицы истинности Stateflow®

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

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

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

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

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

Связанные примеры

Больше о