В этом примере показано, как сконфигурировать fiaccel
функционируйте, чтобы использовать пользовательскую функцию построения графика, чтобы сравнить поведение сгенерированной фиксированной точки против поведения исходного кода MATLAB® с плавающей точкой.
По умолчанию, когда LogIOForComparisonPlotting
опция включена, процесс преобразования использует основанную на временных рядах функцию построения графика, чтобы показать результаты и фиксированной точки с плавающей точкой и различие между ними. Однако во время преобразования фиксированной точки вы можете хотеть визуализировать числовые различия в представлении, которое более подходит для вашего домена приложения. В этом примере показано, как настроить графический вывод и произвести графики рассеивания на тестовом шаге численных данных преобразования фиксированной точки.
Чтобы завершить этот пример, необходимо установить следующие продукты:
MATLAB
Fixed-Point Designer™
Компилятор C
См. поддерживаемые компиляторы.
Можно использовать mex -setup
изменить компилятор по умолчанию. См. Компилятор Значения по умолчанию Изменения (MATLAB).
Создайте локальную рабочую папку, например, 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 | Пользовательская функция построения графика |
Matfile | 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. Вы не должны задавать входные типы для fiaccel
команда, потому что это выводит типы из тестового файла.
fiaccel -args {complex(0, 0)} -float2fixed fxptcfg myFilter
Процесс преобразования генерирует фиксированную точку с помощью размера слова по умолчанию 16
и затем запускает симуляцию фиксированной точки путем выполнения myFilterTest.m
функция и вызов версии фиксированной точки myFilter.m
.
Поскольку вы выбрали, чтобы регистрировать вводы и выводы для графиков сравнения и использовать пользовательскую функцию построения графика, plotDiff.m
, для этих графиков процесс преобразования использует эту функцию, чтобы сгенерировать график сравнения.
График показывает, что результаты фиксированной точки тесно не совпадают с результатами с плавающей точкой.
Увеличьте размер слова до 24
и затем преобразуйте в фиксированную точку снова.
fxptcfg.DefaultWordLength = 24; fiaccel -args {complex(0, 0)} -float2fixed fxptcfg myFilter
Увеличенный размер слова улучшил результаты. На этот раз график показывает, что результаты фиксированной точки совпадают с результатами с плавающей точкой.