exponenta event banner

Предложение типов данных на основе диапазонов моделирования

В этом примере показано, как предлагать типы данных с фиксированной точкой на основе данных диапазона моделирования с помощью приложения Fixed-Point Converter.

Предпосылки

В этом примере требуются следующие продукты:

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

  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

Откройте приложение конвертера с фиксированной точкой

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

  2. На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения.

Выбор исходных файлов

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

  2. Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).

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

Определение типов ввода

  1. На странице Определить типы ввода (Define Input Types), чтобы добавить ex_2ndOrder_filter_test в качестве тестового файла перейдите к ex_2ndOrder_filter_testи нажмите кнопку Открыть.

  2. Щелкните Автоопределить типы ввода (Autodefine Input Types).

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

    Приложение определяет из тестового файла тип ввода x является double(1x256).

  3. Нажмите кнопку Далее (Next), чтобы перейти к шагу Преобразовать в фиксированную точку (Convert to Fixed Point).

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

  1. Приложение создает инструментальную функцию MEX для исходной функции MATLAB. Приложение отображает скомпилированную информацию - тип, размер и сложность - для переменных в коде. См. раздел Просмотр и изменение информации о переменных.

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

  2. Щелкните стрелку Анализ (Analyze). Убедитесь, что выбран параметр «Анализ диапазонов с использованием моделирования», а файл стенда - ex_2ndOrder_filter_test. Можно добавить тестовые файлы и выбрать запуск нескольких тестовых файлов во время моделирования. При запуске нескольких тестовых файлов приложение объединяет результаты моделирования.

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

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

  4. Щелкните Анализ (Analyze).

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

    Если значение имеет ... рядом с ним значение округляется. Пауза над ... для просмотра фактического значения.

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

    Примечание

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

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

    Чтобы изменить предлагаемые типы данных, введите требуемый тип в поле Предлагаемый тип или используйте элементы управления гистограммы. Дополнительные сведения о гистограмме см. в разделе Данные журнала для гистограммы.

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

    В процессе преобразования с фиксированной точкой программное обеспечение проверяет предлагаемые типы и генерирует следующие файлы в 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. В списке «Выходные файлы» выберите ex_2ndOrder_filter_fixpt.m. Приложение отображает сгенерированный код с фиксированной точкой.

  8. Щелкните стрелку Test. Выберите Вход и вывод журнала (Log inputs and outputs for comparison plots) и нажмите кнопку Тест (Test).

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

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

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

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

  10. Нажмите кнопку Далее, чтобы перейти на страницу Завершить рабочий процесс.

    На странице Завершение рабочего процесса приложение отображает сводку проекта и ссылки на созданные выходные файлы.

Интеграция кода фиксированной точки

Чтобы интегрировать версию кода с фиксированной точкой в моделирование на уровне системы, создайте функцию MEX для ускорения алгоритма с фиксированной точкой. Вызовите эту функцию MEX вместо исходного алгоритма MATLAB.

  1. Копия ex_2ndOrder_filter_fixpt.m в локальную рабочую папку.

  2. Создание функции MEX для ex_2ndOrder_filter_fixpt.m. Посмотрите на get_fimath функции в ex_2ndOrder_filter_fixpt.m для получения файла fimathи использовать отчет предложения по типу для получения типа данных с фиксированной точкой для ввода x.

    fm = fimath('RoundingMethod', 'Floor', 'OverflowAction', 'Wrap', 'ProductMode', 'FullPrecision', 'MaxProductWordLength', 128, 'SumMode', 'FullPrecision', 'MaxSumWordLength', 128);
    fiaccel ex_2ndOrder_filter_fixpt -args {fi( 0, 1, 16, 14, fm )}

    fiaccel генерирует функцию MEX, ex_2ndOrder_filter_fixpt_mex, в текущей папке.

  3. Теперь эту функцию MEX можно вызвать вместо исходного алгоритма MATLAB.