В этом учебном пособии показано, как:
Создать код для if-elseif-else логика решения как switch-case заявления.
Создайте код C из кода MATLAB ® с помощью приложения MATLAB Coder™.
Конфигурирование параметров конфигурации генерации кода в проекте кодера MATLAB.
Создайте отчет о создании кода, который можно использовать для трассировки между исходным кодом MATLAB и сгенерированным кодом C.
Для этого учебного пособия требуются следующие продукты:
MATLAB
Кодер MATLAB
Компилятор C
Кодер MATLAB находит и использует поддерживаемый установленный компилятор. См. раздел Поддерживаемые и совместимые компиляторы на веб-сайте MathWorks ®.
Вы можете использовать mex -setup для изменения компилятора по умолчанию. См. раздел Изменение компилятора по умолчанию.
| Напечатать | Имя | Описание |
|---|---|---|
| Код функции | test_code_style.m | Пример MATLAB, использующий if-elseif-else. |
Создайте локальную рабочую папку, например: c:\ecoder\work.
Изменение на matlabroot\help\toolbox\ecoder\examples папка. В командной строке MATLAB введите:
cd(fullfile(docroot, 'toolbox', 'ecoder', 'examples'))
Копировать файл test_code_style.m в локальную рабочую папку.
На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения MATLAB Coder.
Приложение открывает страницу Выбор исходных файлов.
На странице «Выбор исходных файлов» введите или выберите имя функции точки входа. test_code_style.m.
В поле Расположение проекта измените имя проекта на code_style.prj.
Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types). Приложение анализирует функцию на предмет проблем кодирования и готовности к созданию кода. Если приложение выявляет проблемы, открывается страница «Проверка готовности к созданию кода», на которой можно просмотреть и устранить проблемы. В этом примере, поскольку приложение не обнаруживает проблем, открывается страница Определение типов ввода.
Поскольку C использует статическую типизацию, во время компиляции генератор кода должен определить свойства всех переменных в файлах MATLAB. Поэтому необходимо указать свойства всех входов функций. Определение свойств входных данных x:
Щелкните Разрешить ввод входных или глобальных типов непосредственно.
Щелкните поле справа от x.
В списке опций выберите int16. Затем выберите scalar.
Нажмите кнопку Далее, чтобы перейти к шагу Проверка ошибок времени выполнения.
Примечание
Convert if-elseif-else patterns to switch-case statements оптимизация работает только для целочисленных входов и входов перечисляемого типа.
Шаг Проверка ошибок времени выполнения создает файл MEX из функций начального уровня, запускает функцию MEX и сообщает о проблемах. Этот шаг необязателен. Однако рекомендуется выполнять этот шаг. С помощью этого шага можно обнаруживать и исправлять ошибки времени выполнения, которые труднее диагностировать в сгенерированном коде C. По умолчанию функция MEX включает проверку целостности памяти. Эти проверки выполняют проверку границ массива и размеров. Проверки выявляют нарушения целостности памяти в коде, сгенерированном для функций MATLAB. Дополнительные сведения см. в разделе Контрольные проверки времени выполнения.
Чтобы открыть диалоговое окно Проверка на наличие проблем во время выполнения, щелкните стрелку Проверка на наличие проблем.![]()
В диалоговом окне Проверка ошибок времени выполнения введите код вызова test_code_style с вводом примера. В этом примере введите test_code_style(int16(4)).
Щелкните Проверить наличие проблем.
Приложение генерирует функцию MEX. Он запускает функцию MEX с вводом примера. Если приложение обнаруживает проблемы во время создания или выполнения функции MEX, оно выдает предупреждения и сообщения об ошибках. Щелкните эти сообщения, чтобы перейти к проблемному коду и устранить проблему. В этом примере приложение не обнаруживает проблем.
Нажмите кнопку Далее, чтобы перейти к шагу Создать код.
Чтобы открыть диалоговое окно «Генерировать», щелкните стрелку «Генерировать».![]()
Задайте для типа построения значение Static Library (.lib).
Щелкните Дополнительные параметры и задайте следующие параметры:
На вкладке Внешний вид кода установите флажок Преобразовать шаблоны if-elseif-else в операторы switch-case.
На вкладке Отладка убедитесь, что выбран параметр Всегда создавать отчет.
На вкладке Все параметры (All Settings) убедитесь, что выбран параметр Включить отслеживание кода (Enable code traceability).
Щелкните Создать (Generate).
По завершении создания кода генератор кода создает статическую библиотеку C, test_code_style.libи код C в /codegen/lib/test_code_style подпапка. Генератор кода предоставляет ссылку на отчет.
Чтобы открыть отчет о создании кода, щелкните ссылку Просмотр отчета.
test_code_style отображается на панели кода.
Чтобы просмотреть код MATLAB и код C рядом друг с другом, щелкните Код трассировки (Trace Code).
В коде MATLAB наведите курсор на инструкцию. if (x == 1).
Трассировка отчета if (x == 1) в switch заявление.

Нажмите кнопку Далее, чтобы открыть страницу Завершить рабочий процесс.
Страница «Завершение рабочего процесса» показывает, что создание кода выполнено успешно. Он содержит сводку проекта и ссылки на сгенерированные выходные данные.
Чтобы проверить наличие проблем во время выполнения перед созданием кода, выполните шаг Проверить наличие проблем во время выполнения.
Чтобы получить доступ к параметрам конфигурации построения, на странице «Создание кода» откройте диалоговое окно «Создание» и нажмите кнопку «Дополнительные параметры».