exponenta event banner

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

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

  • Сопоставьте созданный код с исходным кодом.

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

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

При выборе исходного кода MATLAB в качестве параметра комментариев созданный код включает:

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

    Примеры и сведения о расположении комментариев в сгенерированном коде см. в разделе Расположение комментариев в сгенерированном коде.

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

    Примечание

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

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

Для включения исходного кода MATLAB в качестве комментариев в код, созданный для функционального блока MATLAB:

  1. В модели на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  2. На панели «Создание кода» > «Комментарии» выберите исходный код MATLAB в качестве комментариев и нажмите кнопку «Применить».

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

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

/* '<S2>:1:18' for y = 1 : 2 : (HEIGHT-4) */
При выборе параметра Комментарии объекта Stateflow создается комментарий отслеживания '<S2>:1:18'. При выборе исходного кода MATLAB в качестве параметра 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);

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

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

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

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

  1. В модели на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  2. На панели «Создание кода» > «Комментарии» выберите комментарии пользователя MATLAB (Embedded Coder) и нажмите кнопку «Применить».

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

Функциональный блок MATLAB имеет следующие ограничения для включения исходного кода MATLAB в качестве комментариев.

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

    • Функции панели инструментов MathWorks ®

    • P-код

    • Цели моделирования

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

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

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

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

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

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

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

Подробнее