В этом примере показано, как обнаружить переполнение с помощью приложения Fixed-Point Converter. На этапе численного тестирования в процессе преобразования можно смоделировать код Fixed-Point с помощью масштабированных двойников. Затем приложение сообщает, какие выражения в сгенерированном коде создают значения, которые переполняют тип данных с фиксированной точкой.
В этом примере требуются следующие продукты:
MATLAB ®
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 в разделе Создание кода щелкните значок приложения.

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

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

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

Щелкните Анализ (Analyze).
тестовый файл, overflow_test, бежит. Приложение отображает минимальный и максимальный диапазоны моделирования на вкладке Переменные. Используя данные диапазона моделирования, программа предлагает типы фиксированных точек для каждой переменной на основе настроек предложения типа по умолчанию и отображает их в столбце Предлагаемый тип.

Чтобы преобразовать алгоритм с плавающей запятой в фиксированную, нажмите кнопку «Преобразовать».
Программное обеспечение проверяет правильность предлагаемых типов и генерирует фиксированную версию функции начального уровня.
Если во время проверки возникают ошибки и предупреждения, приложение отображает их на вкладке Вывод. См. раздел Проверка типов.
Щелкните стрелку Test.
Убедитесь, что тестовый файл overflow_test.m. Выберите Использовать масштабированные двойные значения для обнаружения переполнений и нажмите кнопку Проверить.
Приложение запускает тестовый файл, который использовался для определения типов ввода для тестирования кода MATLAB с фиксированной точкой. Поскольку было выбрано обнаружение переполнений, моделирование также выполняется с использованием масштабированных двойных версий предлагаемых типов фиксированных точек. Масштабированные двойники хранят свои данные в плавающей точке с двойной точностью, поэтому выполняют арифметику в полном диапазоне. Поскольку они сохраняют свои настройки фиксированной точки, они могут сообщать, когда вычисления выходят за пределы диапазона типа фиксированной точки.
Моделирование выполняется. Приложение обнаруживает переполнение. Приложение сообщает о переполнении на вкладке Переполнение. Чтобы выделить переполненное выражение, щелкните переполнение.

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