Предложите типы данных фиксированной точки на основе областей значений моделирования

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

Предпосылки

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

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

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

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

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

  3. Скопируйте ex_2ndOrder_filter.m и файлы ex_2ndOrder_filter_test.m к вашей локальной рабочей папке.

    ВводИмяОписание
    Функциональный кодex_2ndOrder_filter.mФункция MATLAB точки входа
    Тестовый файлex_2ndOrder_filter_test.mСкрипт MATLAB, который тестирует ex_2ndOrder_filter.m

 Функция ex_2ndOrder_filter

 ex_2ndOrder_filter_test Скрипт

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

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

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

Выберите Source Files

Чтобы добавить точку входа функционируют ex_2ndOrder_filter к проекту, обзор к файлу ex_2ndOrder_filter.m, и затем нажать Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем ex_2ndOrder_filter.prj.

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

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

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

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

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

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

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

    Тестовый файл запускает и отображает выводы фильтра для каждого из входных сигналов.

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

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

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

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

  1. На странице Check for Run-Time Issues приложение заполняет поле тестового файла с ex_2ndOrder_filter_test, тестовый файл, что вы раньше задавали входные типы.

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

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

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

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

  1. Отображения приложения скомпилировали информацию — тип, размер, и сложность — для переменных в вашем коде. Смотрите Представление и Измените Переменную информацию.

    На вкладке Function Replacements, функции отображений приложения, которые не поддерживаются для преобразования фиксированной точки. Смотрите Выполнение Моделирования.

  2. Нажмите стрелку Analyze. Проверьте, что Анализируют области значений с помощью моделирования, выбран и что файлом испытательного стенда является ex_2ndOrder_filter_test. Можно добавить тестовые файлы и выбор, чтобы запустить больше чем один тестовый файл во время моделирования. Если при запуске несколько тестовых файлов, приложение объединяет результаты симуляции.

  3. Выберите Данные логов для гистограммы.

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

  4. Нажмите Analyze.

    Моделирование запускается и отображения приложения панель покрытия кода, на которую наносят цветную маркировку, слева от кода MATLAB. Рассмотрите эту информацию, чтобы проверить, что тестовый файл тестирует алгоритм соответственно. Темно-зеленая строка слева от кода указывает, что код запускается каждый раз, когда алгоритм выполняется. Оранжевая панель указывает, что код рядом с нею выполняется только однажды. Это поведение ожидается для этого примера, потому что код инициализирует персистентную переменную. Если ваш тестовый файл не покрывает весь ваш код, обновите тест или добавьте больше тестовых файлов.

    Если значение имеет ... рядом с ним, значение округлено. Сделайте паузу по ..., чтобы просмотреть фактическое значение.

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

    Примечание

    Можно вручную ввести статические области значений. Эти вручную вводимые области значений более приоритетны по сравнению с областями значений моделирования. Приложение использует вручную вводимые области значений, чтобы предложить типы данных. Можно также изменить и заблокировать предложенный тип.

  5. Исследуйте предложенные типы и проверьте, что они покрывают полную область значений моделирования. Чтобы просмотреть регистрируемые данные гистограммы для переменной, кликните по ее полю Proposed Type.

    Чтобы изменить предложенные типы данных, или введите необходимый тип в поле Proposed Type или используйте средства управления гистограммой. Для получения дополнительной информации о гистограмме, см. Данные логов для Гистограммы.

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

    Во время процесса преобразования фиксированной точки программное обеспечение подтверждает предложенные типы и генерирует следующие файлы в папке codegen\ex_2ndOrder_filter\fixpt в вашей локальной рабочей папке.

    • ex_2ndOrder_filter_fixpt.m — версия фиксированной точки ex_2ndOrder_filter.m m.

    • ex_2ndOrder_filter_wrapper_fixpt.m — этот файл преобразовывает значения данных с плавающей точкой, предоставленные тестовым файлом фиксированным точкам, определенным для входных параметров во время преобразования. Эти значения фиксированной точки питаются в конвертированный дизайн фиксированной точки, ex_2ndOrder_filter_fixpt.m m.

    • ex_2ndOrder_filter_fixpt_report.html — этот отчет показывает сгенерированную фиксированную точку и результаты инструментирования фиксированной точки.

    • ex_2ndOrder_filter_report.html — этот отчет показывает исходный алгоритм и результаты инструментирования фиксированной точки.

    • ex_2ndOrder_filter_fixpt_args.mat — MAT-файл, содержащий структуру для входных параметров, структуру для выходных аргументов и имени файла фиксированной точки.

    Если ошибки или предупреждения происходят во время валидации, вы видите их на вкладке Output. Смотрите Типы Проверки.

  7. В списке Выходных файлов выберите отображения приложения ex_2ndOrder_filter_fixpt.m m. The сгенерированная фиксированная точка.

  8. Кликните по Тестовой стрелке. Выберите вводы и выводы Log для графиков сравнения, и затем нажмите Test.

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

    Приложение также сообщает ошибочную информацию о вкладке Verification Output. Максимальная погрешность составляет меньше чем 0,03%. Для этого примера этот предел погрешности приемлем.

    Если различие не приемлемо, измените типы данных фиксированной точки или ваш исходный алгоритм. Для получения дополнительной информации смотрите Численные данные Тестирования.

  9. На вкладке Verification Output приложение обеспечивает ссылку на отчет, который показывает сгенерированную фиксированную точку и предложенную информацию о типе.

  10. Нажмите Далее, чтобы перейти к Сгенерировать Кодовой странице.

Сгенерируйте код С фиксированной точки

  1. В диалоговом окне Generate источник Сборки набора к Fixed-Point и Сборке вводит к Static Library.

  2. Установите язык на C.

  3. Нажмите Generate, чтобы сгенерировать библиотеку с помощью настроек проекта по умолчанию.

    MATLAB CODER разрабатывает проект и генерирует статическую библиотеку C и вспомогательные файлы в подпапке по умолчанию, codegen/lib/ex_2ndOrder_filter.

  4. Отображения приложения сгенерированный код для ex_2ndOrder_filter.c c. В сгенерированном коде C переменные являются присвоенными типами данных фиксированной точки.

  5. Нажмите Далее, чтобы перейти к странице Finish Workflow.

    На странице Finish Workflow, отображения приложения сводные данные проекта и ссылки на сгенерированные выходные файлы.

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