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

Этот пример показывает, как предложить типы данных с фиксированной точкой на основе данных об области значений симуляции с помощью приложения 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, под Code Generation, кликают по значку приложения.

Выберите Source Files

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

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

  1. Установите Numeric Conversion на Convert to fixed point.

  2. Нажмите Next, чтобы перейти к шагу Define Input Types.

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

Входные Define типы

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

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

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

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

  3. Нажмите Next, чтобы перейти к шагу Check for Run-Time Issues.

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

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

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

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

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

  3. Нажмите Next, чтобы перейти к шагу Convert to Fixed Point.

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

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

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

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

  3. Выберите Log data for histogram.

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

  4. Нажмите Analyze.

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

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

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

  7. В списке Output Files выберите ex_2ndOrder_filter_fixpt.m. Отображения приложения сгенерированная фиксированная точка.

  8. Кликните по стрелке Test. Выберите Log inputs and outputs for comparison plots, и затем нажмите Test.

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

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

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

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

  10. Нажмите Next, чтобы перейти к странице Generate Code.

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

  1. В the Generate диалоговом окне, набор Build source к Fixed-Point и Build type к Static Library.

  2. Установите Language на C.

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

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

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

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

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