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

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

Примечание

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

Предпосылки

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

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

  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

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

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

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

Выберите Source Files

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Нажмите стрелку Analyze.

    1. Выберите области значений Analyze с помощью выведенного анализа области значений.

    2. Очистите Анализировать области значений с помощью флажка моделирования.

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

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

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

    Примечание

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

  4. Нажмите Analyze.

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

    В функции 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.

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

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

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

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

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

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

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

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

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

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

  7. Используйте Моделирование Data Inspector, чтобы построить график результатов и фиксированной точки с плавающей точкой.

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

    2. Расширьте настройки Plotting и Reporting и установите График с Моделированием Data Inspector к Yes.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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