В этом примере показано, как сконфигурировать codegen функция для использования пользовательской функции построения графика для сравнения поведения сгенерированного кода с фиксированной точкой с поведением исходного MATLAB с плавающей точкой® код.
По умолчанию, когда LogIOForComparisonPlotting опция включена, процесс преобразования использует основанный на временных рядах функцию построения графика, чтобы показать результаты с плавающей и фиксированной точками и различием между ними. Однако во время преобразования с фиксированной точкой может потребоваться визуализировать числовые различия в представлении, которое более подходит для области приложения. В этом примере показано, как настроить графическое изображение и создать графики поля точек на шаге тестовых чисел преобразования с фиксированной точкой.
Чтобы завершить этот пример, необходимо установить следующие продукты:
MATLAB
Fixed-Point Designer™
Компилятор C
См. «Поддерживаемые компиляторы».
Можно использовать mex -setup для изменения компилятора по умолчанию. См. Раздел «Изменение компилятора по умолчанию».
Создайте локальную рабочую папку, например c:\custom_plot.
Измените на docroot\toolbox\fixpoint\examples папка. В командной строке MATLAB введите:
cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
Скопируйте myFilter.m, myFilterTest.m, plotDiff.m, и filterData.mat файлы в локальную рабочую папку.
| Напечатать | Имя | Описание |
|---|---|---|
| Код функции | myFilter.m | Функция MATLAB точки входа |
| Тестовый файл | myFilterTest.m | Скрипт MATLAB, который тестирует myFilter.m |
| Функция построения графика | plotDiff.m | Пользовательская функция построения графика |
| MAT-файл | filterData.mat | Данные для фильтрации. |
Создайте coder.FixptConfig объект.
fxptcfg = coder.config('fixpt');Укажите имя тестового файла и пользовательское имя функции построения графика. Включите логгирование и проверку цифр.
fxptcfg.TestBenchName = 'myFilterTest'; fxptcfg.PlotFunction = 'plotDiff'; fxptcfg.TestNumerics = true; fxptcfg. LogIOForComparisonPlotting = true; fxptcfg.DefaultWordLength = 16;
Преобразуйте функцию MATLAB с плавающей точкой, myFilter, к коду MATLAB с фиксированной точкой. Вам не нужно задавать типы входа для codegen команда, поскольку выводит типы из тестового файла.
codegen -args {complex(0, 0)} -float2fixed fxptcfg myFilter
Процесс преобразования генерирует код с фиксированной точкой, используя размер слова по умолчанию 16 а затем запускает симуляцию с фиксированной точкой путем выполнения myFilterTest.m функцию и вызов версии myFilter.m с фиксированной точкой.
Поскольку вы выбрали для регистрации входных и выходных параметров для графиков сравнения и использования пользовательской функции построения графика, plotDiff.mдля этих графиков процесс преобразования использует эту функцию, чтобы сгенерировать график сравнения.

График показывает, что результаты с фиксированной точкой не соответствуют результатам с плавающей точкой.
Увеличьте размер слова до 24 и снова преобразуйте в фиксированную точку.
fxptcfg.DefaultWordLength = 24; codegen -args {complex(0, 0)} -float2fixed fxptcfg myFilter
Увеличенный размер слова улучшил результаты. На этот раз график показывает, что результаты с фиксированной точкой совпадают с результатами с плавающей точкой.
