В этом примере показано, как предлагать типы данных с фиксированной точкой на основе статических диапазонов с помощью приложения Fixed-Point Converter. Когда вы предлагаете типы данных на основе производных диапазонов, не нужно предоставлять тестовые файлы, которые используют ваш алгоритм в полном рабочем диапазоне. Выполнение таких тестовых файлов часто занимает много времени. Вместо этого можно сэкономить время путем деривации диапазонов.
Примечание
Анализ производного диапазона не поддерживается для несалярных переменных.
В этом примере требуются следующие продукты:
MATLAB ®
Designer™ с фиксированной точкой
Компилятор C
См. раздел Поддерживаемые компиляторы.
Вы можете использовать mex -setup для изменения компилятора по умолчанию. См. раздел Изменение компилятора по умолчанию.
Создайте локальную рабочую папку, например: c:\dti.
Изменение на docroot\toolbox\fixpoint\examples папка. В командной строке MATLAB введите:
cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
Копировать dti.m и dti_test.m в локальную рабочую папку.
Рекомендуется создать отдельный тестовый сценарий для выполнения предварительной и последующей обработки, например:
Загрузка входов.
Настройка входных значений.
Вывод результатов теста.
| Напечатать | Имя | Описание |
|---|---|---|
| Код функции | dti.m | Начальная функция MATLAB |
| Тестовый файл | dti_test.m | Сценарий MATLAB, который тестирует dti.m |
Перейдите к рабочей папке, содержащей файл для этого примера.
На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения.

Добавление функции точки входа dti в проект, перейдите к файлу dti.mи нажмите кнопку Открыть. По умолчанию приложение сохраняет информацию и параметры этого проекта в текущей папке в файле с именем dti.prj.
Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).
Экраны приложений dti.m для нарушений кода и проблем готовности к преобразованию с фиксированной точкой. Приложение не находит проблем в dti.m.
На странице Определить типы ввода (Define Input Types), чтобы добавить dti_test в качестве тестового файла перейдите к dti_test.mи нажмите кнопку Открыть.
Щелкните Автоопределить типы ввода (Autodefine Input Types).
Тестовый файл запускается. Приложение определяет из тестового файла тип ввода u_in является double(1x1).

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

Если функции не поддерживаются для преобразования с фиксированной точкой, приложение отображает их на вкладке Замены функций.
Щелкните стрелку Анализ (Analyze).![]()
Выберите Анализ диапазонов с помощью анализа производных диапазонов.
Снимите флажок Анализировать диапазоны с помощью моделирования.
Проектные диапазоны необходимы для использования анализа производных диапазонов.

На странице Преобразовать в фиксированную точку (Convert to Fixed Point) на вкладке Переменные (Variables) для ввода u_in, выберите Статический минимум (Static Min) и задайте для него значение -1. Установить статическое максимальное значение 1.
Чтобы вычислить информацию о производном диапазоне, как минимум, необходимо указать статические минимальные и максимальные значения или предлагаемые типы данных для всех входных переменных.
Примечание
При вводе статических диапазонов вручную эти введенные вручную диапазоны имеют приоритет над диапазонами моделирования. Приложение использует введенные вручную диапазоны для предложения типов данных. Также можно изменить и заблокировать предлагаемый тип.
Щелкните Анализ (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.

Приложение предоставляет функцию анализа быстрого производного диапазона и возможность определения тайм-аута в случае, если анализ занимает много времени. См. раздел Вычисление производных диапазонов.
Чтобы преобразовать алгоритм с плавающей запятой в фиксированную, нажмите кнопку «Преобразовать».
В процессе преобразования с фиксированной точкой программное обеспечение проверяет предлагаемые типы и генерирует следующие файлы в 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). См. раздел Проверка типов.
В списке «Выходные файлы» выберите dti_fixpt.m. Приложение отображает сгенерированный код с фиксированной точкой.
Используйте Инспектор данных моделирования для печати результатов с плавающей и фиксированной точками.
Щелкните стрелку Настройки (Settings).![]()
Разверните параметры печати и отчетов и установите для параметра «Печать с помощью инспектора данных моделирования» значение Yes.

Щелкните стрелку Test.
Выберите Вход и вывод журнала (Log inputs and outputs) для графиков сравнения Щелкните Тест (Test).

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

Инспектор данных моделирования можно использовать для просмотра информации о выполнении с плавающей и фиксированной точками и сравнения результатов. Например, для сравнения значений с плавающей и фиксированной точками для вывода y, выберите y. Щелкните Сравнить (Compare). Установите значение «Базовая линия» для исходного прогона и «Сравнить с» для прогона преобразователя. Щелкните Сравнить (Compare).
Инспектор данных моделирования отображает график прогона базовой линии с плавающей точкой относительно прогона с фиксированной точкой и разницу между ними.

На вкладке Verification Output приложение обеспечивает связь с Отчетом о Fixed_Point.

Чтобы открыть отчет, щелкните ссылку dti_fixpt_report.html.
Нажмите кнопку Далее, чтобы перейти на страницу Завершить рабочий процесс.
На странице Завершение рабочего процесса приложение отображает сводку проекта и ссылки на созданные выходные файлы.
Чтобы интегрировать версию кода с фиксированной точкой в моделирование на уровне системы, создайте функцию MEX для ускорения алгоритма с фиксированной точкой. Вызовите эту функцию MEX вместо исходного алгоритма MATLAB.
Копия dti_fixpt.m в локальную рабочую папку.
Чтобы получить 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
Получение типа данных с фиксированной точкой для ввода u_in, посмотрите на отчет по предложениям типа.
Создание функции 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, в текущей папке.
Теперь эту функцию MEX можно вызвать вместо исходного алгоритма MATLAB.