Проблемы с типом данных в сгенерированном коде

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

Эти проверки по умолчанию отключены.

Включите опцию подсветки в проекте

  1. Откройте меню Settings.

  2. В разделе Plotting and Reporting установите Highlight potential data type issues равным Yes.

Включите опцию подсветки в командной строке

  1. Создайте объект строения кода с фиксированной точкой:

    cfg = coder.config('fixpt');

  2. Установите HighlightPotentialDataTypeIssues свойство объекта строения, чтобы true.

    cfg.HighlightPotentialDataTypeIssues = true;

Безбилетный парный разряд

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

Одиночные разъемы в классе Stowaway

Эта проверка подсвечивает все выражения, которые приводят к одной операции.

Дорогие операции с фиксированной точкой

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

Обременительные операции

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

Дорогое округление

Традиционный рукописный код, особенно для приложений управления, почти всегда использует округление «без усилий». Для примера, для беззнаковых целых и двух комплементарных целых чисел, перемещение вправо и падение бит эквивалентно округлению к полу. Чтобы получить результаты, сопоставимые с или лучше, чем вы ожидаете от традиционного рукописного кода, используйте floor метод округления. Эта проверка определяет дорогие операции округления в умножении и делении.

Дорогие операции сравнения

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

Операции с несколькими словами

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