Этот пример показывает, как сконфигурировать приложение MATLAB® Coder™, чтобы использовать пользовательскую функцию построения графика, чтобы сравнить поведение сгенерированной фиксированной точки против поведения исходного кода MATLAB с плавающей точкой.
По умолчанию, когда опция Log inputs and outputs for comparison plots включена, процесс преобразования использует основанную на временных рядах функцию построения графика, чтобы показать результаты и фиксированной точки с плавающей точкой и различие между ними. Однако во время преобразования фиксированной точки вы можете хотеть визуализировать числовые различия в представлении, которое более подходит для вашего домена приложения. Этот пример показывает, как настроить графический вывод и произвести графики рассеивания на тестовом шаге численных данных преобразования фиксированной точки.
Этот пример требует следующих продуктов:
MATLAB
Fixed-Point Designer™
MATLAB Coder
Компилятор 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 | Данные, чтобы отфильтровать. |
Перейдите к папке, которая содержит файлы для этого примера.
На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения.
Чтобы добавить точку входа функционируют myFilter
к проекту, обзор к файлу myFilter.m
, и затем нажать Open.
По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем myFilter.prj
.
Установите Numeric Conversion на Convert to fixed point
.
Нажмите Next, чтобы перейти к шагу Define Input Types.
Экраны приложения myFilter.m
для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в myFilter.m
.
На странице Define Input Types, чтобы добавить myFilterTest
как тестовый файл, обзор к myFilterTest.m
, и затем нажать Open.
Нажмите Autodefine Input Types.
Приложение решает от тестового файла, что входным типом in
является complex(double(1x1))
.
Нажмите Next, чтобы перейти к шагу Check for Run-Time Issues.
Шаг Check for Run-Time Issues генерирует оснащенный MEX myFilter
. Это запускает тестовый файл myFilterTest
, заменяющий вызовы myFilter
с вызовами сгенерированного MEX. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Можно кликнуть по сообщению, чтобы подсветить проблематичный код в окне, где можно отредактировать код.
Просмотрите к тестовому файлу myFiltertest.m
.
Нажмите Check for Issues.
Приложение не обнаруживает проблемы.
Нажмите Next, чтобы перейти к шагу Convert to Fixed Point.
Отображения приложения скомпилировали информацию для переменных в вашем коде. Для получения дополнительной информации см. Просмотрите и измените переменную информациюПросмотрите и измените переменную информацию (Fixed-Point Designer).
Чтобы открыть диалоговое окно настроек, кликните по стрелке Settings.
Проверьте, что Default word length установлен в 16
.
Под Advanced, набор Signedness к Signed
Под Plotting and Reporting, набор Custom plot function к plotDiff
.
Кликните по стрелке Analyze. Проверьте, что тестовым файлом является myFilterTest
.
Нажмите Analyze.
Тестовый файл, myFilterTest
, запускается и минимум симуляции отображений приложения и максимальные области значений на вкладке Variables. Используя данные об области значений симуляции, программное обеспечение предлагает фиксированные точки для каждой переменной на основе настроек предложения по типу по умолчанию и отображает их в столбце Proposed Type.
Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.
Программное обеспечение подтверждает предложенные типы и генерирует версию фиксированной точки функции точки входа.
Нажмите стрелку Test, выберите Log inputs and outputs for comparison plots, и затем нажмите Test.
Выполнение приложения тестовый файл, что вы раньше для входных define типов тестировали фиксированную точку код MATLAB. Поскольку вы выбрали, чтобы регистрировать вводы и выводы для графиков сравнения и использовать пользовательскую функцию построения графика, plotDiff.m
, для этих графиков, приложение использует эту функцию, чтобы сгенерировать график сравнения. График показывает, что результаты фиксированной точки тесно не совпадают с результатами с плавающей точкой.
В настройках увеличьте DefaultWordLength до 24
и затем преобразуйте в фиксированную точку снова.
Приложение преобразовывает myFilter.m
в фиксированную точку и предлагает типы данных с фиксированной точкой с помощью нового размера слова по умолчанию.
Запуститесь тестовые численные данные продвигаются снова.
Увеличенный размер слова улучшает результаты. На этот раз график показывает, что результаты фиксированной точки совпадают с результатами с плавающей точкой.