При использовании Simulink ® Coder™ исходный код MATLAB ® можно включить в качестве комментариев в код, созданный для функционального блока MATLAB. Включение этой информации в созданный код позволяет :
Сопоставьте созданный код с исходным кодом.
Узнайте, как созданный код реализует ваш алгоритм.
Оцените качество созданного кода.
При выборе исходного кода MATLAB в качестве параметра комментариев созданный код включает в себя:
Исходный код в виде комментария сразу после тега отслеживания. При включении отслеживания и создании кода для целей ERT (требуется Embedded Coder ®) теги отслеживания являются гиперссылками на исходный код. Дополнительные сведения см. в разделе Использование отслеживания в функциональных блоках MATLAB.
Примеры и сведения о расположении комментариев в сгенерированном коде см. в разделе Расположение комментариев в сгенерированном коде.
Текст справки функции в теле функции в сгенерированном коде. Текст справки по функциям является первым комментарием после подписи функции MATLAB. В нем содержится информация о возможностях функции и способах ее использования.
Примечание
С помощью встроенного кодера можно также включить текст справки по функциям в созданный баннер функции кода. Дополнительные сведения см. в разделе Включение комментариев пользователя MATLAB в сгенерированный код.
Для включения исходного кода MATLAB в качестве комментариев в код, созданный для функционального блока MATLAB:
На вкладке Код C (C Code) щелкните Параметры конфигурации (Configuration Parameters).
На панели «Создание кода» > «Комментарии» выберите исходный код 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.
На вкладке Код C (C Code) щелкните Параметры конфигурации (Configuration Parameters).
На панели «Создание кода» > «Комментарии» выберите комментарии пользователя MATLAB и нажмите кнопку «Применить».
Для включения исходного кода MATLAB в качестве комментариев функциональный блок MATLAB имеет следующие ограничения:
Нельзя включать исходный код MATLAB в качестве комментариев для:
Функции панели инструментов MathWorks ®
P-код
Цели моделирования
Блоки таблицы истинности Stateflow ®
Внешний вид или расположение комментариев может варьироваться в зависимости от следующих условий:
Комментарии могут по-прежнему появляться в сгенерированном коде, даже если код реализации исключен, например, из-за постоянного сворачивания.
Комментарии могут быть исключены из сгенерированного кода, если устранена полная функция или блок кода.
Для некоторых оптимизаций комментарии могут быть отделены от созданного кода.
Созданный код включает юридически обязательные комментарии из исходного кода MATLAB, даже если в созданный код не включены комментарии исходного кода.