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

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

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

Включите опцию подсветки в приложении MATLAB Coder

  1. На странице Convert to Fixed Point, чтобы открыть диалоговое окно Settings, кликают по стреле Settings.

  2. Под Plotting and Reporting, набор Highlight potential data type issues к Yes.

Когда преобразование будет завершено, откройте отчет преобразования фиксированной точки просмотреть выделение. Нажмите View report во вкладке Type Validation Output.

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

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

    cfg = coder.config('fixpt');

  2. Установите HighlightPotentialDataTypeIssues свойство настройки возражает против true.

    cfg.HighlightPotentialDataTypeIssues = true;

Безбилетник удваивается

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

Для проекта строгой одинарной точности задайте стандарт языка, который поддерживает реализации с одинарной точностью. Чтобы изменить библиотеку для проекта, во время Сгенерировать шага Кода, в диалоговом окне настроек проекта, на вкладке Custom Code, устанавливают Language standard на C99 (ISO).

Одиночные игры безбилетника

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

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

Дорогая проверка операций фиксированной точки идентифицирует возможности оптимизации для фиксированной точки. Это подсвечивает выражения в коде MATLAB, которые требуют громоздкого умножения или деления, дорогого округления, дорогого сравнения или операций многословных. Для получения дополнительной информации об оптимизации сгенерированной фиксированной точки смотрите Советы для того, чтобы Сделать Сгенерированный код Более эффективным (Fixed-Point Designer).

Громоздкие операции

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

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

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

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

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

Операции многословные

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