В этом примере показано, как сгенерировать код С с одинарной точностью из кода 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, который тестирует |
Перейдите к папке работы, которая содержит файл для этого примера.
На вкладке 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. Отсутствие операций с двойной точностью указывает, что никакие операции с двойной точностью не остаются.