В этом примере показано, как создать код MATLAB ® с одинарной точностью из кода MATLAB с двойной точностью. В этом примере показан рабочий процесс преобразования с одной точностью, используемый при просмотре кода MATLAB с одной точностью или использовании параметров проверки. При необходимости можно также создать код C/C + + с одинарной точностью.
Чтобы завершить этот пример, установите следующие продукты:
MATLAB
MATLAB Coder™
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 шаг. Щелкните ссылку Просмотр отчета.
На панели «Источник MATLAB» щелкните ex_2ndOrder_filter_single.
В отчете о создании кода отображается код MATLAB с одинарной точностью для ex_2ndOrder_filter.
При создании кода с одинарной точностью codegen позволяет выделить потенциальные проблемы типа данных в отчетах о создании кода. Если codegen невозможно удалить операцию двойной точности, отчет выделяет выражение MATLAB, которое приводит к операции. Перейдите на вкладку Анализ кода. Отсутствие потенциальных проблем с типами данных указывает на отсутствие операций двойной точности.
Можно просмотреть графики сравнения для входных данных. x и выходные данные y потому что вы выбрали для регистрации входные и выходные данные для сравнительных графиков.


Если также требуется создать код C с одной точностью, создайте объект конфигурации кода для создания кода C. Использовать этот объект конфигурации с -config вариант codegen функция. Например:
Создайте объект конфигурации кода для создания статической библиотеки C.
cfg = coder.config('lib');
Создайте код C. Разрешить создание отчета о создании кода.
codegen -double2single scfg -config cfg ex_2ndOrder_filter -report
Чтобы просмотреть отчет о создании кода для создания кода C, щелкните ссылку Просмотр отчета.
На панели «Созданный код» щелкните ex_2ndOrder_filter.c.
Переменные двойной точности имеют тип float в коде C.
Индекс i - целое число.
При создании кода с одинарной точностью codegen позволяет выделить потенциальные проблемы типа данных в отчете о создании кода. Если codegen невозможно удалить операцию двойной точности, отчет выделяет выражение MATLAB, которое приводит к операции.
Перейдите на вкладку Анализ кода. Затем разверните Возможные проблемы с типами данных. Отсутствие операций двойной точности указывает на то, что операции двойной точности не остаются.
codegen | coder.config | coder.SingleConfig