Этот пример показывает, как предложить типы данных фиксированной точки на основе статических диапазонов, используя приложение MATLAB® Coder™. Когда Вы предлагаете типы данных на основе полученных диапазонов Вы, не должны предоставлять испытательные файлы, которые осуществляют Ваш алгоритм в его полном рабочем диапазоне. Выполнение таких тестовых файлов часто занимает много времени. Вместо этого можно сэкономить время путем деривации диапазонов.
Примечание
Анализ производного диапазона не поддерживается для несалярных переменных.
В этом примере требуются следующие продукты:
MATLAB
Кодер 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.
Задать числовое преобразование в Convert to fixed point.

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

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

Если функции не поддерживаются для преобразования с фиксированной точкой, приложение отображает их на вкладке Замены функций.
Щелкните стрелку Анализ (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.
Нажмите кнопку Далее, чтобы перейти к шагу Создать код.
В диалоговом окне «Создание» задайте для параметра «Источник построения» значение Fixed-Point и тип сборки для Source Code.
Установите для языка значение C.
Нажмите «Создать» для создания библиотеки с использованием параметров проекта по умолчанию.
MATLAB Coder строит проект и создает статическую библиотеку C и вспомогательные файлы во вложенной папке по умолчанию, codegen/lib/dti_fixpt.
Приложение отображает созданный код для dti_fixpt.c. В сгенерированном коде C переменным назначаются типы данных с фиксированной точкой.
Нажмите кнопку Далее, чтобы перейти на страницу Завершить рабочий процесс.
На странице Завершение рабочего процесса приложение отображает сводку проекта и ссылки на созданные выходные файлы.