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

Нажмите 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, чтобы перейти к шагу Check for Run-Time Issues.
Шаг Check for Run-Time Issues генерирует оснащенный MEX. Это запускает тестовый файл overflow_test заменяя вызовы overflow с вызовами сгенерированной MEX-функции. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Можно кликнуть по сообщению, чтобы подсветить проблематичный код в панели, где можно отредактировать код.
На странице Check for Run-Time Issues приложение заполняет поле тестового файла с overflow_test, тестовый файл, что вы раньше задавали входные типы.
Нажмите Check for Issues.
Приложение не обнаруживает проблемы.
Нажмите Next, чтобы перейти к шагу Convert to Fixed Point.
Отображения приложения скомпилировали информацию — тип, размер, и сложность — для переменных в вашем коде. Для получения дополнительной информации вид на море и Изменяет Переменную информацию.

На вкладке 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, и затем повторите преобразование и протестируйте фиксированную точку снова.
Переполнение все еще происходит, указывая, что это - сложение в выражении, которое переполняется.