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

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

Примечание

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

Предпосылки

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

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

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

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

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

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

    Это - лучшая практика, должен создать отдельный тестовый скрипт, чтобы сделать пред - и последующая обработка, такая как:

    • Загрузка входных параметров.

    • Подготовка входных значений.

    • Вывод результатов испытаний.

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

 Функция dti

 Функция dti_test

Откройте приложение Fixed-Point Converter

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

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

Выберите Source Files

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

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

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

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

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

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

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

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

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

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

    Если функции не поддерживаются для преобразования фиксированной точки, отображения приложения их на вкладке Function Replacements.

  2. Кликните по стрелке Analyze.

    1. Выберите Analyze ranges using derived range analysis.

    2. Снимите флажок Analyze ranges using simulation.

    Области значений проекта требуются, чтобы использовать выведенный анализ области значений.

  3. На странице Convert to Fixed Point, на вкладке Variables, для входа u_in, выбирают Static Min и устанавливают его на -1. Установите Static Max на 1.

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

    Примечание

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

  4. Нажмите Analyze.

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

    В функции dti clip_status вывод имеет минимальное значение -2 и максимум 2.

    % Compute Output
    if (u_state > limit_upper)
        y = limit_upper;
        clip_status = -2;
    elseif (u_state >= limit_upper)
        y = limit_upper;
        clip_status = -1;
    elseif (u_state < limit_lower)
    	y = limit_lower;
        clip_status = 2;
    elseif (u_state <= limit_lower)
    	y = limit_lower;
        clip_status = 1;   
    else        
        y = u_state;
        clip_status = 0;
    end
    

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

    Приложение предоставляет возможность Quick derived range analysis и опцию задавать тайм-аут в случае, если анализ занимает много времени. Смотрите Вычисление Выведенные Области значений.

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

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

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

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

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

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

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

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

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

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

    1. Кликните по стрелке Settings.

    2. Расширьте настройки Plotting and Reporting и установите Plot with Simulation Data Inspector на Yes.

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

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

    4. Можно использовать Инспектора Данных моделирования, чтобы просмотреть информацию о выполнении и фиксированной точки с плавающей точкой и сравнить результаты. Например, чтобы сравнить значения и фиксированной точки с плавающей точкой для вывода y, выберите y. Нажмите Compare. Установите Baseline на исходное выполнение и Compare to к запущенному конвертеру. Нажмите Compare.

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

  8. На вкладке Verification Output приложение обеспечивает ссылку на Отчет Fixed_Point.

    Чтобы открыть отчет, щелкните по ссылке dti_fixpt_report.html.

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

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

Интегрируйте фиксированную точку

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

  1. Скопируйте dti_fixpt.m в свою локальную рабочую папку.

  2. Чтобы получить свойства fimath для входного параметра, посмотрите на функцию get_fimath в dti_fixpt.m.

    function fm = get_fimath()
    	fm = fimath('RoundingMethod', 'Floor', 'OverflowAction', 'Wrap', 'ProductMode', 'FullPrecision', 'MaxProductWordLength', 128, 'SumMode', 'FullPrecision', 'MaxSumWordLength', 128);
    end
    

  3. Чтобы получить тип данных с фиксированной точкой для входа u_in, посмотрите на отчет предложения по типу.

  4. Сгенерируйте MEX-функцию для dti_fixpt.m.

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

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

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