Этот пример показывает, как сгенерировать код С с одинарной точностью из с двойной точностью кода MATLAB® при помощи приложения MATLAB Coder™.
Чтобы завершить этот пример, установите следующие продукты:
MATLAB
MATLAB CODER
Фиксированная точка 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, под Генерацией кода, кликают по значку приложения.
Чтобы добавить точку входа функционируют ex_2ndOrder_filter
к проекту, обзор к файлу ex_2ndOrder_filter.m
, и затем нажать Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем ex_2ndOrder_filter.prj
.
Установите числовое преобразование в Convert to single precision
.
Нажмите Далее, чтобы перейти к Задавать Входному шагу Типов.
Экраны приложения ex_2ndOrder_filter.m
для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в ex_2ndOrder_filter.m
m.
На странице Define Input Types, чтобы добавить ex_2ndOrder_filter_test
как тестовый файл, обзор к ex_2ndOrder_filter_test
. Нажмите Open.
Нажмите Autodefine Input Types.
Тестовый файл запускает и отображает выводы фильтра для каждого из входных сигналов. Приложение решает, что входным типом x
является double(1x256)
.
Нажмите Далее, чтобы перейти к Проверке на шаг Проблем Во время выполнения.
Чтобы обнаружить и устранить проблемы преобразования с одинарной точностью, выполните Проверку для шага Проблем Во время выполнения.
На странице Check for Run-Time Issues приложение заполняет поле тестового файла с ex_2ndOrder_filter_test
, тестовый файл, что вы раньше задавали входные типы.
Нажмите Check for Issues.
Приложение генерирует MEX-функцию с одинарной точностью от ex_2ndOrder_filter
. Это запускает тестовый файл ex_2ndOrder_filter_test
, заменяющий вызовы ex_2ndOrder_filter
с вызовами сгенерированной MEX-функции. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по сообщению, чтобы подсветить проблематичный код в окне, где можно отредактировать код. В этом примере приложение не обнаруживает проблемы.
Нажмите Далее, чтобы перейти к Сгенерировать Кодовой странице.
В диалоговом окне Generate, типе Сборки набора к Static Library
.
Установите язык на C.
Для других настроек используйте значения по умолчанию.
Чтобы сгенерировать код, нажмите Generate.
MATLAB CODER разрабатывает проект и генерирует статическую библиотеку C и вспомогательные файлы в подпапке по умолчанию, codegen/lib/ex_2ndOrder_filter
.
Отображения приложения сгенерированный код для ex_2ndOrder_filter.c
c.
С двойной точностью переменные имеют, вводят float
в коде С.
Индекс i
является целым числом.
Когда вы генерируете код с одинарной точностью, приложение позволяет подсветить потенциальных проблем типа данных в отчете генерации кода. Если приложение не может удалить с двойной точностью операция, отчет подсвечивает выражение MATLAB, которое приводит к операции.
Чтобы открыть отчет генерации кода, щелкните по ссылке Отчета Представления.
Кликните по вкладке Code Insights. Расширьте Потенциальные проблемы типа данных. Отсутствие с двойной точностью операций указывает, что не с двойной точностью операции остаются.