Автоматизированное преобразование фиксированной точки

Автоматизированные возможности преобразования фиксированной точки

Можно преобразовать код MATLAB® с плавающей точкой в фиксированную точку с помощью приложения MATLAB Coder™ или в командной строке с помощью функции codegen опция -float2fixed. Можно принять решение предложить типы данных на основе данных области значений моделирования, выведенных (также известный статичными) данные области значений или оба.

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

Для списка поддерживавших функций MATLAB и функций, смотрите Функции языка MATLAB, поддерживавшие для Автоматизированного Преобразования Фиксированной точки (Fixed-Point Designer).

Во время преобразования фиксированной точки вы можете:

  • Проверьте, что ваши тестовые файлы покрывают полную намеченную операционную область значений вашего алгоритма с помощью результатов покрытия кода.

  • Предложите дробные длины на основе размеров слова по умолчанию.

  • Предложите размеры слова на основе дробных длин по умолчанию.

  • Оптимизируйте целые числа.

  • Задайте запасы прочности для данных min моделирования / макс. данных.

  • Подтвердите это, можно разработать проект с предложенными типами данных.

  • Протестируйте численные данные путем выполнения тестового файла с примененными фиксированными точками.

  • Просмотрите гистограмму битов, которые использует каждая переменная.

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

Покрытие кода

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

Рассмотрение результатов покрытия кода помогает вам проверить, что ваши тестовые файлы осуществляют алгоритм соответственно. Если покрытие кода является несоответствующим, измените тестовые файлы или добавьте больше тестовых файлов, чтобы увеличить покрытие. Если вы моделируете несколько тестовых файлов в одном выполнении, отображения приложения совокупное покрытие. Однако, если вы задаете несколько тестовых файлов, но запускаете их по одному, отображения приложения покрытие файла, который пришел последним.

Отображения приложения панель покрытия, на которую наносят цветную маркировку, слева от кода.

Эта таблица описывает расцветку.

Цвет панели покрытияУказывает
Зеленый

Одна из следующих ситуаций:

  • Функция точки входа выполняется многократно, и код выполняется больше чем в один раз.

  • Функция точки входа выполняет одно время, и код выполняет одно время.

Различные оттенки зеленого цвета указывают на различные области значений количеств выполнения строки. Самый темный оттенок зеленого цвета указывает на самую высокую область значений.

ОранжевыйФункция точки входа выполняется многократно, но код выполняет одно время.
КрасныйКод не выполняется.

Когда вы устанавливаете свой курсор на панель покрытия, цветное выделение расширяет по коду. Для каждого раздела кода, отображения приложения число раз, которое выполняет раздел.

Чтобы проверить, что ваши тестовые файлы тестируют ваш алгоритм в намеченной операционной области значений, рассмотрите результаты покрытия кода.

Цвет панели покрытияДействие
ЗеленыйЕсли вы ожидаете, что разделы кода выполнятся более часто, чем покрытие показывает, или измените код MATLAB или тестовые файлы.
ОранжевыйЭто поведение ожидается для кода инициализации, например, инициализации персистентных переменных. Если вы ожидаете, что код выполнится больше чем в один раз, или изменит код MATLAB или тестовые файлы.
КрасныйЕсли код, который не выполняется, является состоянием ошибки, это поведение приемлемо. Если вы ожидаете, что код выполнится, или изменит код MATLAB или тестовые файлы. Если код записан консервативно и имеет верхние и более низкие граничные пределы, и вы не можете изменить тестовые файлы, чтобы достигнуть этого кода, добавить статические минимальные и максимальные значения. Смотрите Вычисление Выведенные Области значений.

Покрытие кода включено по умолчанию. Выключите его только после того, как вы проверили, что у вас есть соответствующее покрытие тестового файла. Выключение покрытия кода может ускорить моделирование. Выключить покрытие кода, на странице Convert to Fixed Point:

  1. Нажмите стрелку Analyze.

  2. Снимите флажок покрытия кода Показа.

Предложение типов данных

Приложение предлагает типы данных фиксированной точки на основе вычисленных областей значений и размера слова или дробной установки длины. Вычисленные области значений основаны на данных области значений моделирования, выведенных данных области значений (также известный как статические области значений), или оба. Если при запуске моделирование и вычисляете выведенные области значений, приложение объединяет моделирование и выведенные области значений.

Примечание

Вы не можете предложить типы данных на основе выведенных областей значений для классов MATLAB.

Выведенный анализ области значений не поддержан для нескалярных переменных.

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

Выполнение моделирования

Во время преобразования фиксированной точки приложение генерирует оснащенную MEX-функцию для вашего файла MATLAB точки входа. Если сборка завершается без ошибок, отображения приложения скомпилировали информацию (тип, размер, сложность) для функций и переменных в вашем коде. Чтобы перейти к локальным функциям, кликните по вкладке Functions. Если ошибки сборки происходят, приложение предоставляет сообщения об ошибке, которые соединяются со строкой кода, которая вызвала проблемы сборки. Необходимо исправить эти ошибки прежде, чем запустить моделирование. Используйте ссылку, чтобы перейти к незаконной строке кода в редакторе MATLAB и изменить код, чтобы устранить проблему. Если ваш код использует функции, которые не поддерживаются для преобразования фиксированной точки, отображения приложения их на вкладке Function Replacements. Смотрите Функциональные Замены.

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

Если тестовый файл запускается успешно, моделирование, минимальные и максимальные значения и предложенные типы отображены на вкладке Variables. Если вы вручную вводите статические области значений для переменной, вручную вводимые области значений более приоритетны по сравнению с областями значений моделирования. Если вы вручную изменяете предложенные типы путем ввода или использования гистограммы, типы данных заблокированы так, чтобы приложение не могло изменить их.

Если тестовый файл перестал работать, ошибки отображены на вкладке Output.

Тестовые файлы должны осуществить ваш алгоритм в его полной операционной области значений. Качество предложенных типов данных фиксированной точки зависит от того, как хорошо тестовый файл покрывает операционную область значений алгоритма с точностью, которую вы хотите. Можно добавить тестовые файлы и выбор, чтобы запустить больше чем один тестовый файл во время моделирования. Если при запуске несколько тестовых файлов, приложение объединяет результаты симуляции.

Опционально, можно выбрать к данным логов для гистограмм. После выполнения моделирования можно просмотреть гистограмму для каждой переменной. Для получения дополнительной информации см. Данные логов для Гистограммы.

Вычисление выведенных областей значений

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

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

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

Когда вы выбираете Compute Derived Ranges, выполнение приложения выведенный анализ области значений, чтобы вычислить статические области значений для переменных в вашем алгоритме MATLAB. Когда анализ завершен, статические области значений отображены на вкладке Variables. Если выполнение производит выведенные области значений +/-Inf, рассмотрите области значений определения для всех персистентных переменных.

Опционально, можно выбрать Quick derived range analysis. При использовании этой опции приложение выполняет более быстрый статический анализ. Вычисленные области значений могут быть больше, чем необходимый. Выберите эту опцию в случаях, где статический анализ занимает больше времени, чем можно предоставить.

Если выведенный анализ области значений для вашего проекта занимает много времени, можно опционально установить тайм-аут. Когда тайм-аут достигнут, приложение прерывает анализ.

Блокировка предложенных типов данных

Можно заблокировать предложенные типы данных против изменений приложением с помощью одного из следующих методов:

  • Установка Manually предложенный тип данных в приложении.

  • Щелчок правой кнопкой по типу, предложенному инструментом и выбор Lock computed value.

Отображения приложения заблокировали типы данных полужирным так, чтобы их было легко идентифицировать. Можно разблокировать тип с помощью одного из следующих методов:

  • Вручную перезапись его.

  • Щелчок правой кнопкой по нему и выбор Undo changes. Это действие разблокировало только выбранный тип.

  • Щелчок правой кнопкой и выбор Undo changes for all variables. Это действие разблокировало все заблокированные предложенные типы.

Просмотр функций

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

После преобразования левая панель также отображает список выходных файлов включая версию фиксированной точки исходного алгоритма. Если ваша функция не специализирована, приложение сохраняет исходное имя функции в имени файла фиксированной точки и добавляет суффикс фиксированной точки. Например, здесь версией фиксированной точки ex_2ndOrder_filter.m является ex_2ndOrder_filter_fixpt.m m.

Классы

Информация об отображениях приложения для класса и каждого из его методов. Например, рассмотрите класс, Counter, который имеет статический метод, MAX_VALUE, и метод, next.

Если вы выбираете класс, отображения приложения класс и его свойства на вкладке Variables.

Если вы выбираете метод, отображения приложения только переменные, которые использует метод.

Специализации

Если функция специализирована, списки приложений каждая специализация и нумерует их последовательно. Например, рассмотрите функцию, dut, который вызывает подфункции, foo и bar, многократно с различными входными типами.

function y = dut(u, v)
 
tt1 = foo(u);
tt2 = foo([u v]);
tt3 = foo(complex(u,v));
 
ss1 = bar(u);
ss2 = bar([u v]); 
ss3 = bar(complex(u,v));
 
y = (tt1 + ss1) + sum(tt2 + ss2) + real(tt3) + real(ss3);
 
end
 
function y = foo(u)
  y = u * 2;
end
 
function y = bar(u)
  y = u * 4;
end

Если вы выбираете функцию верхнего уровня, отображения приложения все переменные на вкладке Variables.

Если вы выбираете структурный вид, приложение также отображает номера строки для вызова каждой специализации.

Если вы выбираете специализацию, отображения приложения только переменные, которые использует специализация.

В сгенерированной фиксированной точке количество каждой специализации фиксированной точки совпадает с номером в списке Исходных кодов, который дает возможность прослеживать между версиями и фиксированной точки с плавающей точкой вашего кода. Например, сгенерированную функцию фиксированной точки для foo > 1 называют foo_s1.

Просмотр переменных

Вкладка Variables предоставляет следующую информацию для каждой переменной в функции, выбранной в Панели навигации:

  • Введите — исходный тип данных переменной в алгоритме MATLAB.

  • Сим Мин и Сим Макс — Минимальные и максимальные значения, присвоенные переменной во время моделирования.

    Можно отредактировать моделирование минимальные и максимальные значения. Отредактированные поля показывают полужирным. Редактирование этих полей не инициировало статический анализ области значений, но инструмент использует отредактированные значения в последующих исследованиях. Можно вернуться к типам, предложенным приложением.

  • Статический Min и Статический Max — статические минимальные и максимальные значения.

    Чтобы вычислить выведенные области значений и предложить типы данных на основе этих областей значений, обеспечьте статические минимальные и максимальные значения для всех входных переменных. Чтобы улучшить анализ, введите как можно больше статической информации об области значений для других переменных.

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

  • Целое число — Являются ли все значения, присвоенные переменной во время моделирования, целыми числами.

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

  • Предложенный тип данных фиксированной точки для заданного слова (или часть) длина. Предложенные типы данных используют обозначение numerictype. Например, numerictype(1,16,12) обозначает фиксированную точку со знаком с размером слова 16 и дробной длиной 12. numerictype(0,16,12) обозначает фиксированную точку без знака с размером слова 16 и дробной длиной 12.

    Поскольку приложение не применяет типы данных к выражениям, оно не отображает предложенные типы для них. Вместо этого это отображает их исходные типы данных.

Можно также просмотреть и отредактировать переменную информацию в панели кода путем установки курсора на имя переменной.

Можно использовать Ctrl+F, чтобы искать переменные в коде MATLAB и на вкладке Variables. Приложение подсвечивает случаи в коде и отображает только переменную с указанным именем на вкладке Variables.

Просмотр информации для классов MATLAB

Отображения приложения:

  • Код для классов MATLAB и покрытие кода для методов класса в окне кода. Используйте список Исходных кодов на странице Convert to Fixed Point, чтобы выбрать который метод класса или метод класса просмотреть. Если вы выбираете метод класса, приложение подсвечивает метод в окне кода.

  • Информация о классах MATLAB на вкладке Variables.

Данные логов для гистограммы

К данным логов для гистограмм:

  • На странице Convert to Fixed Point нажмите стрелку Analyze.

  • Выберите Данные логов для гистограммы.

  • Нажмите Analyze Ranges.

После моделирования, чтобы просмотреть гистограмму для переменной, на вкладке Variables, кликают по полю Proposed Type для той переменной.

Гистограмма обеспечивает область значений предложенного типа данных и процент значений моделирования, которые покрывает предложенный тип данных. Нагрузки на долото отображены вдоль Оси X и процента случаев вдоль Оси Y. Каждый интервал в гистограмме соответствует немного в двоичном слове. Например, эта гистограмма отображает область значений для переменной типа numerictype(1,16,14).

Можно просмотреть эффект изменения предложенных типов данных:

  • Перетаскивание краев ограничительной рамки в окне гистограммы, чтобы изменить предложенный тип данных.

  • Выбор или очистка Со знаком.

Вернуться к типам, предложенным автоматическим преобразованием, в окне гистограммы, нажатии кнопки.

Функциональные замены

Если ваш код MATLAB использует функции, которые не имеют поддержки фиксированной точки, списки приложений эти функции на вкладке Function Replacements. Можно принять решение заменить неподдерживаемые функции на пользовательскую функциональную замену или на интерполяционную таблицу.

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

Примечание

Используя эту таблицу, можно заменить имена функций, но вы не можете заменить шаблоны аргумента.

Если экранирование готовности генерации кода отключено, список неподдерживаемых функций на вкладке Function Replacements может быть неполным или неправильным. В этом случае добавьте функции вручную. Смотрите Готовность Генерации кода экранировать в Приложении MATLAB CODER.

Проверка типов

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

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

  • На вкладке Variables осмотрите предложенные типы и вручную измененные типы, чтобы проверить, что они допустимы.

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

Тестирование численных данных

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

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

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

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

Если приложение обнаруживает переполнение на его вкладке Overflow, оно обеспечивает:

  • Список переменных и выражений, которые переполнились

  • Информация, на сколько каждой переполненной переменной

  • Ссылка на переменные или выражения в окне кода

Если ваше исходное масштабируемое использование алгоритма удваивается, приложение также предоставляет информацию о переполнении для этих выражений.

Смотрите также

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

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