Этот пример показывает, как сгенерировать код С с одинарной точностью из кода MATLAB® с двойной точностью при помощи приложения MATLAB Coder™.
Чтобы завершить этот пример, установите следующие продукты:
MATLAB
MATLAB Coder
Fixed-Point Designer™
Компилятор C
См. поддерживаемые компиляторы.
Можно использовать mex -setup
, чтобы изменить компилятор по умолчанию. См. Компилятор Значения по умолчанию Изменения (MATLAB).
Создайте локальную рабочую папку, например, c:\ex_2ndOrder_filter
.
Изменитесь на папку docroot\toolbox\fixpoint\examples
. В командной строке MATLAB, введите:
cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
Скопируйте ex_2ndOrder_filter.m
и файлы ex_2ndOrder_filter_test.m
к вашей локальной рабочей папке.
Ввод | Имя | Описание |
---|---|---|
Функциональный код | ex_2ndOrder_filter.m | Функция MATLAB точки входа |
Тестовый файл | ex_2ndOrder_filter_test.m | Скрипт MATLAB, который тестирует |
Перейдите к папке работы, которая содержит файл для этого примера.
На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения.
Чтобы добавить точку входа функционируют ex_2ndOrder_filter
к проекту, обзор к файлу ex_2ndOrder_filter.m
, и затем нажать Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем ex_2ndOrder_filter.prj
.
Установите Numeric Conversion на Convert to single precision
.
Нажмите Next, чтобы перейти к шагу Define Input Types.
Экраны приложения ex_2ndOrder_filter.m
для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в ex_2ndOrder_filter.m
.
На странице Define Input Types, чтобы добавить ex_2ndOrder_filter_test
как тестовый файл, обзор к ex_2ndOrder_filter_test
. Нажмите Open.
Нажмите Autodefine Input Types.
Тестовый файл запускает и отображает выводы фильтра для каждого из входных сигналов. Приложение решает, что входным типом x
является double(1x256)
.
Нажмите Next, чтобы перейти к шагу Check for Run-Time Issues.
Чтобы обнаружить и устранить проблемы преобразования с одинарной точностью, выполните шаг Check for Run-Time Issues.
На странице Check for Run-Time Issues приложение заполняет поле тестового файла с ex_2ndOrder_filter_test
, тестовый файл, что вы раньше задавали входные типы.
Нажмите Check for Issues.
Приложение генерирует MEX-функцию с одинарной точностью от ex_2ndOrder_filter
. Это запускает тестовый файл ex_2ndOrder_filter_test
, заменяющий вызовы ex_2ndOrder_filter
с вызовами сгенерированной MEX-функции. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по сообщению, чтобы подсветить проблематичный код в окне, где можно отредактировать код. В этом примере приложение не обнаруживает проблемы.
Нажмите Next, чтобы перейти к странице Generate Code.
В the Generate диалоговом окне, набор Build type к Static Library
.
Установите Language на C.
Для других настроек используйте значения по умолчанию.
Чтобы сгенерировать код, нажмите Generate.
MATLAB Coder разрабатывает проект и генерирует статическую библиотеку C и вспомогательные файлы в подпапке по умолчанию, codegen/lib/ex_2ndOrder_filter
.
Отображения приложения сгенерированный код для ex_2ndOrder_filter.c
.
Переменные с двойной точностью имеют, вводят float
в коде С.
Индекс i
является целым числом.
Когда вы генерируете код с одинарной точностью, приложение позволяет подсветить потенциальных проблем типа данных в отчете генерации кода. Если приложение не может удалить операцию с двойной точностью, отчет подсвечивает выражение MATLAB, которое приводит к операции.
Чтобы открыть отчет генерации кода, щелкните по ссылке View Report.
Кликните по вкладке Code Insights. Расширьте Potential data type issues. Отсутствие операций с двойной точностью указывает, что никакие операции с двойной точностью не остаются.