Этот пример показывает вам как:
Сгенерируйте код для if-elseif-else
логика решения как switch-case
операторы.
Сгенерируйте код С из своего кода MATLAB® с помощью приложения MATLAB Coder™.
Сконфигурируйте параметры конфигурации генерации кода в проекте MATLAB Coder.
Сгенерируйте генерацию кода, сообщают, что можно использовать, чтобы проследить между оригинальным кодом MATLAB и сгенерированным кодом C.
Этот пример требует следующих продуктов:
MATLAB
MATLAB Coder
Компилятор C
MATLAB Coder определяет местоположение и использует поддерживаемый установленный компилятор. См. Поддерживаемые и Совместимые Компиляторы на веб-сайте 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 Apps, под Code Generation, кликают по значку приложения MATLAB Coder.
Приложение открывает страницу Select Source Files.
На странице Select Source Files введите или выберите имя функции точки входа test_code_style.m
.
В поле Project location измените название проекта в code_style.prj
.
Нажмите Next, чтобы перейти к шагу Define Input Types. Приложение анализирует функцию для кодирования готовность генерации кода и проблемы. Если приложение идентифицирует проблемы, оно открывает страницу Review Code Generation Readiness, где можно рассмотреть и устранить проблемы. В этом примере, потому что приложение не обнаруживает проблемы, оно открывает страницу Define Input Types.
Поскольку C использует статический контроль типов, во время компиляции, генератор кода должен определить свойства всех переменных в файлах MATLAB. Поэтому необходимо задать свойства всех входных параметров функции. Задавать свойства входа x
:
Нажмите Let me enter input or global types directly.
Кликните по полю справа от x
.
Из списка опций выберите int16
. Затем выберите scalar
.
Нажмите Next, чтобы перейти к шагу the Check for Run-Time Issues.
Примечание
Convert if-elseif-else patterns to switch-case statements
оптимизация работает только на входные параметры целочисленного и перечислимого типа.
Шаг Check for Run-Time Issues генерирует файл MEX от ваших функций точки входа, запускает MEX-функцию и сообщает о проблемах. Этот шаг является дополнительным. Однако это - лучшая практика выполнить этот шаг. Используя этот шаг, можно обнаружить и зафиксировать ошибки времени выполнения, которые более трудно диагностировать в сгенерированном коде C. По умолчанию MEX-функция включает проверки целостности памяти. Эти проверки выполняют границы массивов и проверку размерности. Проверки обнаруживают нарушения целостности памяти в коде, сгенерированном для функций MATLAB. Для получения дополнительной информации смотрите Проверки на этапе выполнения Управления.
Чтобы открыть диалоговое окно Check for Run-Time Issues, кликните по стреле Check for Issues.
В диалоговом окне Check for Run-Time Issues введите код, который вызывает test_code_style
с входом в качестве примера. В данном примере введите test_code_style(int16(4))
.
Нажмите Check for Issues.
Приложение генерирует MEX-функцию. Это запускает MEX-функцию с входом в качестве примера. Если приложение обнаруживает проблемы во время генерации MEX-функции или выполнения, это предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по этим сообщениям, чтобы перейти к проблематичному коду и устранить проблему. В этом примере приложение не обнаруживает проблемы.
Нажмите Next, чтобы перейти к шагу Generate Code.
Чтобы открыть диалоговое окно Generate, кликните по стреле Generate.
Установите Build type на Static Library (.lib)
.
Нажмите More settings и установите эти настройки:
На вкладке Code Appearance установите флажок Convert if-elseif-else patterns to switch-case statements.
На вкладке Debugging убедитесь, что Always create a report выбран.
На вкладке All Settings убедитесь, что Enable code traceability выбран.
Нажмите Generate.
Когда генерация кода завершена, генератор кода производит статическую библиотеку C, test_code_style.lib
, и код С в /codegen/lib/test_code_style
подпапка. Генератор кода обеспечивает ссылку на отчет.
Чтобы открыть отчет генерации кода, щелкните по ссылке View Report.
test_code_style
функция отображена в панели кода.
Чтобы просмотреть код MATLAB и код С друг рядом с другом, нажмите Trace Code.
В коде MATLAB установите свой курсор на оператор if (x == 1)
.
Отчет прослеживает if (x == 1)
к switch
оператор.
Нажмите Next, чтобы открыть страницу Finish Workflow.
Страница Finish Workflow указывает на ту генерацию кода, за которой следуют. Это предоставляет сводные данные проекта и ссылки на сгенерированный выход.
Чтобы проверять на проблемы во время выполнения перед генерацией кода, выполните шаг Check for Run-Time Issues.
К настройкам конфигурации сборки доступа, на странице Generate Code, открывают диалоговое окно Generate, и затем нажимают More Settings.