Обнаружьте переполнение

Этот пример показывает, как обнаружить переполнение с помощью приложения MATLAB® Coder™. В числовой стадии тестирования в процессе преобразования вы принимаете решение моделировать масштабируемое использование фиксированной точки, удваивается. Приложение затем сообщает, какие выражения в сгенерированном коде производят значения, которые переполняют типа данных фиксированной точки.

Предпосылки

Этот пример требует следующих продуктов:

Создайте новую папку и скопируйте соответствующие файлы

  1. Создайте локальную рабочую папку, например, c:\overflow.

  2. Изменитесь на папку docroot\toolbox\fixpoint\examples. В командной строке MATLAB войдите:

    cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))

  3. Скопируйте overflow.m и файлы overflow_test.m к вашей локальной рабочей папке.

    ВводИмяОписание
    Функциональный кодoverflow.mФункция MATLAB точки входа
    Тестовый файлoverflow_test.mСкрипт MATLAB, который тестирует overflow.m

 Функция переполнения

 Функция overflow_test

Откройте приложение MATLAB CODER

  1. Перейдите к папке работы, которая содержит файл для этого примера.

  2. На вкладке MATLAB Toolstrip Apps, под Генерацией кода, кликают по значку приложения.

Выберите Source Files

Чтобы добавить точку входа функционируют overflow к проекту, обзор к файлу overflow.m, и затем нажать Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем overflow.prj.

Включите преобразование фиксированной точки

  1. Установите числовое преобразование в Convert to fixed point.

  2. Нажмите Далее, чтобы перейти к Задавать Входному шагу Типов.

    Экраны приложения overflow.m для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в overflow.m m.

Задайте входные типы

  1. На странице Define Input Types, чтобы добавить overflow_test как тестовый файл, обзор к overflow_test.m, и затем нажать Open.

  2. Нажмите Autodefine Input Types.

    Выполнения тестового файла. Приложение решает от тестового файла, что входным типом b является double(1x12), x является double(256x1), и reset является logical(1x1).

  3. Нажмите Далее, чтобы перейти к Проверке на шаг Проблем Во время выполнения.

Проверьте на проблемы во время выполнения

Проверка на шаг Проблем Во время выполнения генерирует оснащенный MEX. Это запускает тестовый файл overflow_test, заменяющий вызовы overflow с вызовами сгенерированной MEX-функции. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Можно кликнуть по сообщению, чтобы подсветить проблематичный код в панели, где можно отредактировать код.

  1. На странице Check for Run-Time Issues приложение заполняет поле тестового файла с overflow_test, тестовый файл, что вы раньше задавали входные типы.

  2. Нажмите Check for Issues.

    Приложение не обнаруживает проблемы.

  3. Нажмите Далее, чтобы перейти к Преобразованию в шаг Фиксированной точки.

Преобразуйте в фиксированную точку

  1. Отображения приложения скомпилировали информацию — тип, размер, и сложность — для переменных в вашем коде. Для получения дополнительной информации смотрите Представление и Измените Переменную информацию.

    На вкладке Function Replacements функции отображений приложения, которые не поддерживаются для преобразования фиксированной точки. Смотрите Выполнение Моделирования.

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

  3. Нажмите Analyze.

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

  4. Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.

    Программное обеспечение подтверждает предложенные типы и генерирует версию фиксированной точки функции точки входа.

    Если ошибки и предупреждения происходят во время валидации, отображения приложения их на вкладке Output. Смотрите Типы Проверки.

Протестируйте численные данные и проверку на переполнение

  1. Кликните по Тестовой стрелке. Проверьте, что тестовым файлом является overflow_test.m m. Выберите масштабируемый Use, удваивается, чтобы обнаружить переполнение, и затем нажать Test.

    Выполнение приложения тестовый файл, что вы раньше задавали входные типы, чтобы протестировать фиксированную точку код MATLAB. Поскольку вы выбрали, чтобы обнаружить переполнение, это также запускает моделирование с помощью масштабируемых двойных версий предложенных фиксированных точек. Масштабируемый удваивается, хранят их данные в с двойной точностью с плавающей точкой, таким образом, они выполняют арифметику в полном спектре. Поскольку они сохраняют свои настройки фиксированной точки, они могут сообщить, когда вычисление выходит из области значений фиксированной точки.

    Выполнения моделирования. Приложение обнаруживает переполнение. Приложение сообщает о переполнении относительно вкладки Overflow. Чтобы подсветить выражение, которое переполнилось, кликните по переполнению.

  2. Определите, было ли это суммой или умножением, которое переполнилось.

    В fimath настройках режим продукта набора к FullPrecision, и затем повторяет преобразование и тестирует фиксированную точку снова.

    Переполнение все еще происходит, указывая, что это - сложение в выражении, которое переполняется.

Была ли эта тема полезной?