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

Добавить функцию точки входа overflow к проекту просмотрите к файлу overflow.m, и затем нажмите Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем overflow.prj.
Нажмите Next, чтобы перейти к шагу Define Input Types.
Экраны приложения overflow.m для нарушений регулярной кодовой последовательности и проблем готовности преобразования фиксированной точки. Приложение не находит проблемы в overflow.m.
На странице Define Input Types, чтобы добавить overflow_test как тестовый файл, просмотрите к overflow_test.m, и затем нажмите Open.
Нажмите Autodefine Input Types.
Запуски тестового файла. Приложение решает из тестового файла что входной тип b double(1x12)X double(256x1), и reset logical(1x1).

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

На вкладке Function Replacements функции отображений приложения, которые не поддерживаются для преобразования фиксированной точки. Смотрите Выполнение Симуляции.
Чтобы просмотреть fimath настройки, кликните по стреле Settings
. Установите fimath Product mode и Sum mode к KeepLSB. Эти настройки моделируют поведение целочисленных операций на языке C.

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

Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.
Программное обеспечение подтверждает предложенные типы и генерирует версию фиксированной точки функции точки входа.
Если ошибки и предупреждения происходят во время валидации, отображения приложения их на вкладке Output. Смотрите Типы Проверки.
Кликните по стреле Test
. Проверьте, что тестовым файлом является overflow_test.m. Выберите Use scaled doubles to detect overflows, и затем нажмите Test.
Выполнение приложения тестовый файл, что вы раньше для входных define типов тестировали фиксированную точку код MATLAB. Поскольку вы выбрали, чтобы обнаружить переполнение, это также запускает симуляцию с помощью масштабируемых двойных версий предложенных фиксированных точек. Масштабируемый удваивается, хранят их данные в с двойной точностью, с плавающей точкой, таким образом, они выполняют арифметику в полном спектре. Поскольку они сохраняют свои настройки фиксированной точки, они могут сообщить, когда расчет выходит из области значений фиксированной точки.
Запуски симуляции. Приложение обнаруживает переполнение. Приложение сообщает о переполнении относительно вкладки Overflow. Чтобы подсветить выражение, которое переполнилось, кликните по переполнению.

Определите, было ли это суммой или умножением, которое переполнилось.
В настройках fimath, набор Product mode к FullPrecision, и затем повторите преобразование и протестируйте фиксированную точку снова.
Переполнение все еще происходит, указывая, что это - сложение в выражении, которое переполняется.