Когда вы моделируете, обновляете или генерируете код из Simulink® модель, которая содержит блоки MATLAB Function или Stateflow® графики с MATLAB® functions, Simulink генерирует отчет для каждой функции MATLAB в вашей модели. Используйте отчет для отладки функций MATLAB и проверки того, что они подходят для генерации кода. Отчет содержит информацию о типах переменных и выражениях в функциях, которая может помочь вам найти источники сообщений об ошибке и понять правила распространения типов.
Stateflow создает по одному отчету для каждой диаграммы Stateflow, независимо от количества функций MATLAB, которые она содержит.
Если у вас в модели идентичные блоки MATLAB Function, для идентичных блоков генерируется один отчет.
Чтобы открыть отчет о функции MATLAB, используйте один из следующих методов:
Откройте функцию MATLAB. На вкладке Editor нажмите View Report.
Моделируйте или обновляйте модель. Если происходит ошибка компиляции, в Diagnostic Viewer окне выберите report
ссылка.
Вызовите openReport
функция на MATLABFunctionConfiguration
объект для блока. Для получения дополнительной информации смотрите Программный доступ к отчетам о функциях MATLAB.
Примечание
Первый раз, когда вы открываете отчет о функции MATLAB, Simulink автоматически обновляет вашу модель. Если вы вносите последующие изменения в код MATLAB в блоке, необходимо обновить модель перед повторным открытием отчета. В противном случае отчет не отражает ваши изменения. На вкладке Modeling выберите Update Model или нажмите Ctrl+D. Для получения дополнительной информации см. «Обновление схемы» и «Запуск симуляции».
На панели MATLAB Source представление Function List организует функции по файлу, который их содержит. Для визуализации функций в соответствии со структурой вызова используйте представление Call Tree.
Отчет о функции MATLAB доступен только для чтения. Чтобы отредактировать функцию, выберите имя функции в панели MATLAB Source и нажмите Edit in MATLAB.
Чтобы просмотреть функцию MATLAB на панели кода, щелкните имя функции на панели MATLAB Source. На панели кода, когда вы останавливаетесь на переменной или выражении, подсказка отображает информацию о ее размере, типе и сложности. Кроме того, подсветка синтаксиса помогает вам идентифицировать элементы синтаксиса MATLAB и некоторые атрибуты генерации кода, такие как является ли функция внешней или является ли аргумент постоянным.
Отчет идентифицирует внешнюю функцию с фиолетовым текстом. Подсказка указывает, что функция является внешней.
Оранжевый текст указывает аргумент константы времени компиляции на функцию точки входа или специализированную функцию. Подсказка включает постоянное значение.
Знание значения постоянного аргумента помогает вам понять сгенерированные сигнатуры функции. Это также помогает вам увидеть, когда генерация кода создает специализацию функции для различных значений постоянных аргументов.
Чтобы экспортировать значение в переменную в рабочей области, щелкните значок «Экспорт».
Чтобы просмотреть ошибки и предупреждения, в нижней панели отчета откройте вкладку All Messages. Чтобы выделить исходный код ошибки или предупреждения, щелкните сообщение. Это - лучшая практика обращения к первому сообщению в списке, поскольку последующие ошибки и предупреждения часто связаны с первым сообщением.
Чтобы просмотреть информацию о переменных для выбранной функции MATLAB, в нижней панели отчета откройте вкладку Variables.
Таблица переменных показывает:
Класс, размер и сложность
Свойства фиксированных точек
Эта информация помогает вам отлаживать ошибки, такие как ошибки несоответствия типов, и понимать распространение типов.
Эта таблица описывает символы, значки и другие индикаторы в таблице переменных.
Столбец в таблице переменных | Индикатор | Описание |
---|---|---|
Имя | расширитель | Переменная имеет элементы или свойства, которые можно увидеть, щелкнув по расширителю. |
Имя | {:} | Неоднородный массив ячеек (все элементы имеют одинаковые свойства). |
Имя | {n} | n первый элемент массива гетерогенного массива ячеек. |
Класс | v > n | v используется повторно с другим классом, размером и сложностью. Номер n определяет повторное использование с уникальным набором свойств. Когда вы останавливаетесь на переименованной переменной, в отчете подсвечиваются только образцы этой переменной, которые имеют общий класс, размер и сложность. См. «Повторное использование той же переменной с другими свойствами». |
Размер | :n | Массив переменного размера с верхней границей n . |
Размер | :? | Массив переменного размера без верхней границы. |
Размер | курсив | Массив переменного размера, размерности которого не изменяют размер во время выполнения. |
Класс | sparse префикс | Разреженный массив. |
Класс | complex префикс | Комплексное число. |
Класс | Тип с фиксированной точкой. Чтобы увидеть свойства фиксированной точки, щелкните значок. |
Вы можете получить доступ к отчетам о функциях MATLAB, вызывая эти функции на MATLABFunctionConfiguration
объекты:
openReport
открывает отчет функции MATLAB для блока.
closeReport
закрывает отчет функции MATLAB для блока.
getReport
возвращает MATLABFunctionReport
объект для блока. Вы можете запросить информацию отчета от этого объекта путем доступа к его Functions
свойство, которое является массивом coder.Function
объекты. См. Кодер. Свойства функции (MATLAB Coder).
Например, чтобы создать пользовательский отчет, в котором перечислены функции и переменные в блоке MATLAB Function в модели call_stats_block1
описан в разделе Создание пользовательской функциональности Используя Блок MATLAB Function, выполните следующие шаги:
Доступ к MATLABFunctionConfiguration
объект для блока MATLAB Function.
config = get_param('call_stats_block1/MATLAB Function', ... 'MATLABFunctionConfiguration');
Создайте MATLABFunctionReport
объект для блока MATLAB Function.
report = getReport(config);
Доступ к coder.Function
объекты в отчете.
functions = report.Functions;
Создайте пользовательский отчет.
for i = 1:numel(functions) fprintf('Function %s uses these variables:\n',functions(i).Name) variables = functions(i).Variables; for j = 1:numel(variables) fprintf('%d. %s -- %s\n',j,variables(j).Name,variables(j).Scope) end fprintf('\n') end
Function stats uses these variables: 1. mean -- Output 2. stdev -- Output 3. vals -- Input 4. len -- Local Function avg uses these variables: 1. mean -- Output 2. array -- Input 3. size -- Input
closeReport
| getReport
| MATLABFunctionConfiguration
| MATLABFunctionReport
| openReport