В этом примере показано, как сгенерировать MATLAB с одной точностью® код из кода MATLAB с двойной точностью. В этом примере показан рабочий процесс преобразования с одной точностью, который вы используете, когда хотите просмотреть код MATLAB с одной точностью или использовать опции верификации. Опционально можно также сгенерировать одноточный код C/C + +.
Чтобы завершить этот пример, установите следующие продукты:
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, который тестирует |
Создайте объект строения с одной точностью. Укажите имя тестового файла. Проверьте код с одной точностью с помощью тестового файла. Постройте график ошибки между кодом двойной точности и кодом одинарной точности. Используйте значения по умолчанию для других свойств.
scfg = coder.config('single'); scfg.TestBenchName = 'ex_2ndOrder_filter_test'; scfg.TestNumerics = true; scfg.LogIOForComparisonPlotting = true;
Чтобы преобразовать функцию MATLAB с двойной точностью, ex_2ndOrder_filter
, для одноточного кода MATLAB, используйте codegen
функция со -double2single
опция.
codegen -double2single scfg ex_2ndOrder_filter
codegen
анализирует код двойной точности. Процесс преобразования выводит типы путем запуска тестового файла, потому что вы не указали входные типы для ex_2ndOrder_filter
функция. Процесс преобразования выбирает типы с одной точностью для переменных с двойной точностью. Он выбирает int32
для индексных переменных. Когда преобразование завершено, codegen
генерирует отчет по предложению типа.
Чтобы просмотреть типы, выбранные для переменных в процессе преобразования, откройте отчет предложения типа для ex_2ndOrder_filter
функция. Щелкните ссылку ex_2ndOrder_filter_report.html
.
Отчет откроется в веб-браузере. Процесс преобразования преобразован:
Переменные двойной точности в single
.
Область индекса i
на int32
. Процесс преобразования приводит переменные индекса и размерности к int32
.
Чтобы просмотреть отчет о генерации кода MATLAB с одной точностью, в Командном окне:
Прокрутка до Generate Single-Precision Code
шаг. Щелкните ссылку View report.
На панели MATLAB Source нажмите ex_2ndOrder_filter_single
.
В отчете о генерации кода отображается код MATLAB с одной точностью для ex_2ndOrder_filter
.
Когда вы генерируете код с одной точностью, codegen
позволяет выделять потенциальные проблемы типа данных в отчетах генерации кода. Если codegen
невозможно удалить операцию двойной точности, в отчете подсвечивается выражение MATLAB, которое приводит к операции. Перейдите на вкладку Code Insights. Отсутствие потенциальных проблем с типом данных указывает, что никаких операций двойной точности не остается.
Можно увидеть графики сравнения для входа x
и выход y
поскольку вы выбрали для регистрации входных и выходных параметров для графиков сравнения.
Если вы также хотите сгенерировать Код С с одной точностью, создайте объект строения кода для генерации кода С. Используйте этот объект строения с -config
опция codegen
функция. Для примера:
Создайте объект строения кода для генерации статической библиотеки на C.
cfg = coder.config('lib');
Сгенерируйте код С Включите генерацию отчета генерации кода.
codegen -double2single scfg -config cfg ex_2ndOrder_filter -report
Чтобы просмотреть отчет генерации кода для генерации кода C, щелкните ссылку View Report.
На панели Generated Code нажмите ex_2ndOrder_filter.c
.
Переменные двойной точности имеют тип float
в коде С
Область индекса i
- целое число.
Когда вы генерируете код с одной точностью, codegen
позволяет выделять потенциальные проблемы типа данных в отчете генерации кода. Если codegen
невозможно удалить операцию двойной точности, в отчете подсвечивается выражение MATLAB, которое приводит к операции.
Перейдите на вкладку Code Insights. Затем разверните Potential data type issues. Отсутствие операций двойной точности указывает, что никаких операций двойной точности не остается.
codegen
| coder.config
| coder.SingleConfig