Визуализируйте различия между результатами и фиксированной точки с плавающей точкой

Этот пример показывает, как сконфигурировать приложение MATLAB® Coder™, чтобы использовать пользовательскую функцию plot, чтобы сравнить поведение сгенерированной фиксированной точки против поведения исходного кода MATLAB с плавающей точкой.

По умолчанию, когда вводы и выводы Журнала для опции графиков сравнения включены, процесс преобразования использует основанную на временном ряде функцию построения графика, чтобы показать результаты и фиксированной точки с плавающей точкой и различие между ними. Однако во время преобразования фиксированной точки вы можете хотеть визуализировать числовые различия в представлении, которое более подходит для вашего домена приложения. Этот пример показывает, как настроить графическое изображение и произвести графики рассеивания на тестовом шаге численных данных преобразования фиксированной точки.

Предпосылки

Этот пример требует следующих продуктов:

Создайте новую папку и скопируйте соответствующие файлы

  1. Создайте локальную рабочую папку, например, c:\custom_plot.

  2. Изменитесь на папку docroot\toolbox\fixpoint\examples. В командной строке MATLAB войдите:

    cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples')) 

  3. Скопируйте myFilter.m, myFilterTest.m, plotDiff.m и файлы filterData.mat к вашей локальной рабочей папке.

    ВводИмяОписание
    Функциональный кодmyFilter.mФункция MATLAB точки входа
    Тестовый файлmyFilterTest.mСкрипт MATLAB, который тестирует myFilter.m
    Функция построения графикаplotDiff.mПользовательская функция plot
    Matfileфильтрация данных. циновкаДанные, чтобы отфильтровать.

 Функция myFilter

 myFilterTest Файл

 Функция plotDiff

Откройте приложение MATLAB CODER

  1. Перейдите к папке, которая содержит файлы для этого примера.

  2. На вкладке MATLAB Toolstrip Apps, под Генерацией кода, кликают по значку приложения.

Выберите Source Files

Чтобы добавить точку входа функционируют myFilter к проекту, обзор к файлу myFilter.m, и затем нажать Open.

По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем myFilter.prj.

Включите преобразование фиксированной точки

  1. Установите числовое преобразование в Convert to fixed point.

  2. Нажмите Далее, чтобы перейти к Задавать Входному шагу Типов.

    Экраны приложения myFilter.m для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в myFilter.m m.

Задайте входные типы

  1. На странице Define Input Types, чтобы добавить myFilterTest как тестовый файл, обзор к myFilterTest.m, и затем нажать Open.

  2. Нажмите Autodefine Input Types.

    Приложение решает от тестового файла, что входным типом in является complex(double(1x1)).

  3. Нажмите Далее, чтобы перейти к Проверке на шаг Проблем Во время выполнения.

Проверьте на проблемы во время выполнения

Проверка на шаг Проблем Во время выполнения генерирует оснащенный MEX myFilter. Это запускает тестовый файл myFilterTest, заменяющий вызовы myFilter с вызовами сгенерированного MEX. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Можно кликнуть по сообщению, чтобы подсветить проблематичный код в окне, где можно отредактировать код.

  1. Просмотрите к тестовому файлу myFiltertest.m m.

  2. Нажмите Check for Issues.

    Приложение не обнаруживает проблемы.

  3. Нажмите Далее, чтобы перейти к Преобразованию в шаг Фиксированной точки.

Преобразуйте в фиксированную точку

  1. Отображения приложения скомпилировали информацию для переменных в вашем коде. Для получения дополнительной информации см. Просмотрите и измените переменную информациюПросмотрите и измените переменную информацию (Fixed-Point Designer).

  2. Чтобы открыть диалоговое окно настроек, кликните по стрелке Настроек.

    1. Проверьте, что размер слова По умолчанию установлен в 16.

    2. Под Усовершенствованным, набор, Со знаком к Signed

    3. При Графическом изображении и Создании отчетов, наборе Пользовательская функция plot к plotDiff.

  3. Нажмите стрелку Analyze. Проверьте, что тестовым файлом является myFilterTest.

  4. Нажмите Analyze.

    Тестовый файл, myFilterTest, запускается и минимум моделирования отображений приложения и максимальные области значений на вкладке Variables. Используя данные области значений моделирования, программное обеспечение предлагает фиксированные точки для каждой переменной на основе настроек предложения по типу по умолчанию и отображает их в Предложенном столбце Типа.

  5. Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.

    Программное обеспечение подтверждает предложенные типы и генерирует версию фиксированной точки функции точки входа.

Протестируйте численные данные и просмотрите графики сравнения

  1. Нажмите стрелку Test, выберите вводы и выводы Log для графиков сравнения, и затем нажмите Test.

    Выполнение приложения тестовый файл, что вы раньше задавали входные типы, чтобы протестировать фиксированную точку код MATLAB. Поскольку вы выбрали, чтобы регистрировать вводы и выводы для графиков сравнения и использовать пользовательскую функцию построения графика, plotDiff.m, для этих графиков, приложение использует эту функцию, чтобы сгенерировать график сравнения. График показывает, что результаты фиксированной точки тесно не совпадают с результатами с плавающей точкой.

  2. В настройках увеличьте DefaultWordLength до 24 и затем преобразуйте в фиксированную точку снова.

    Приложение преобразовывает myFilter.m в фиксированную точку и предлагает типы данных фиксированной точки с помощью нового размера слова по умолчанию.

  3. Запуститесь тестовые численные данные продвигаются снова.

    Увеличенный размер слова улучшает результаты. На этот раз график показывает, что результаты фиксированной точки совпадают с результатами с плавающей точкой.

Была ли эта тема полезной?