При наличии лицензии Simulink ® Coder™ исходный код MATLAB ® можно включить в качестве комментариев в код, созданный для функционального блока MATLAB. Включение этой информации в созданный код позволяет :
Сопоставьте созданный код с исходным кодом.
Узнайте, как созданный код реализует ваш алгоритм.
Оцените качество созданного кода.
При выборе исходного кода MATLAB в качестве параметра комментариев созданный код включает:
Исходный код в виде комментария сразу после тега отслеживания. При включении отслеживания и создании кода для целей ERT (требуется лицензия Embedded Coder ®) теги отслеживания являются гиперссылками на исходный код. Дополнительные сведения об отслеживании для функционального блока MATLAB см. в разделе Использование отслеживания в функциональных блоках MATLAB.
Примеры и сведения о расположении комментариев в сгенерированном коде см. в разделе Расположение комментариев в сгенерированном коде.
Текст справки функции в теле функции в сгенерированном коде. Текст справки по функциям является первым комментарием после подписи функции MATLAB. В нем содержится информация о возможностях функции и способах ее использования.
Примечание
С помощью лицензии Embedded Coder можно также включить текст справки по функциям в баннер функций созданного кода. Дополнительные сведения см. в разделе Включение комментариев пользователя MATLAB в сгенерированный код.
Для включения исходного кода MATLAB в качестве комментариев в код, созданный для функционального блока MATLAB:
В модели на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).
На панели «Создание кода» > «Комментарии» выберите исходный код MATLAB в качестве комментариев и нажмите кнопку «Применить».
Автоматически сгенерированные комментарии, содержащие исходный код, появляются после тега прослеживаемости в сгенерированном коде следующим образом.
/* '<S2>:1:18' for y = 1 : 2 : (HEIGHT-4) */
'<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 оператор непосредственно предшествует коду, реализующему оператор. Этот комментарий появляется после добавленных комментариев, предшествующих созданному коду. Комментарии для 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 заголовок инструкции непосредственно предшествует сгенерированному коду, реализующему заголовок инструкции. Этот комментарий появляется после добавленных комментариев, предшествующих созданному коду.
Комментарий для switch заголовок инструкции непосредственно предшествует сгенерированному коду, реализующему заголовок инструкции. Этот комментарий появляется после добавленных комментариев, предшествующих созданному коду. Комментарии для case и otherwise предложения появляются сразу после сгенерированного кода, реализующего предложение, и перед кодом, сгенерированным для операторов в предложении.
Комментарии пользователя MATLAB включают текст справки функции и другие комментарии. Текст справки по функциям является первым комментарием после подписи функции MATLAB. В нем содержится информация о возможностях функции и способах ее использования. Комментарии пользователя MATLAB можно включить в код, созданный для функционального блока MATLAB.
В модели на вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).
На панели «Создание кода» > «Комментарии» выберите комментарии пользователя MATLAB (Embedded Coder) и нажмите кнопку «Применить».
Функциональный блок MATLAB имеет следующие ограничения для включения исходного кода MATLAB в качестве комментариев.
Нельзя включать исходный код MATLAB в качестве комментариев для:
Функции панели инструментов MathWorks ®
P-код
Цели моделирования
Блоки таблицы истинности Stateflow ®
Внешний вид или расположение комментариев может варьироваться в зависимости от следующих условий:
Комментарии могут по-прежнему появляться в сгенерированном коде, даже если код реализации исключен, например, из-за постоянного сворачивания.
Комментарии могут быть исключены из сгенерированного кода, если устранена полная функция или блок кода.
Для некоторых оптимизаций комментарии могут быть отделены от созданного кода.
Созданный код всегда включает юридически обязательные комментарии из исходного кода MATLAB, даже если в созданный код не включены комментарии исходного кода.