Этот пример показывает, как обнаружить переполнение с помощью приложения Fixed-Point Converter. В числовой стадии тестирования в процессе преобразования вы принимаете решение моделировать масштабируемое использование фиксированной точки, удваивается. Приложение затем сообщает, какие выражения в сгенерированном коде производят значения, которые переполняют типа данных с фиксированной точкой.
Этот пример требует следующих продуктов:
MATLAB®
Fixed-Point Designer™
Компилятор C
См. поддерживаемые компиляторы.
Можно использовать mex -setup
, чтобы изменить компилятор по умолчанию. См. Компилятор Значения по умолчанию Изменения (MATLAB).
Создайте локальную рабочую папку, например, 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
, и затем повторяют преобразование и тестируют фиксированную точку снова.
Переполнение все еще происходит, указывая, что это - сложение в выражении, которое переполняется.