В этом примере показов, как сгенерировать Код С с одной точностью из MATLAB с двойной точностью® код при помощи приложения MATLAB Coder™.
Чтобы завершить этот пример, установите следующие продукты:
MATLAB
MATLAB CODER
Fixed-Point Designer™
Компилятор C
См. «Поддерживаемые компиляторы».
Можно использовать mex -setup
для изменения компилятора по умолчанию. См. Раздел «Изменение компилятора по умолчанию».
Создайте локальную рабочую папку, например 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, который тестирует |
Перейдите к рабочей папке, содержащей файл для этого примера.
На вкладке Apps MATLAB Toolstrip, в разделе 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.
В диалоговом окне 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. Отсутствие операций двойной точности указывает, что никаких операций двойной точности не остается.