exponenta event banner

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

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

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

Включить опцию выделения в приложении кодера MATLAB

  1. На странице «Преобразовать в фиксированную точку», чтобы открыть диалоговое окно «Параметры», щелкните стрелку «Параметры».

  2. В разделе «Печать и создание отчетов» установите для параметра «Выделить возможные проблемы типа данных» значение Yes.

По завершении преобразования откройте отчет о преобразовании с фиксированной точкой для просмотра выделения. Щелкните Показать отчет (View report) на вкладке Вывод проверки типа (Type Validation Output).

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

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

    cfg = coder.config('fixpt');

  2. Установите HighlightPotentialDataTypeIssues свойства объекта конфигурации для true.

    cfg.HighlightPotentialDataTypeIssues = true;

Безбилетный дубль

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

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

Безбилетные синглы

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

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

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

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

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

Дорогостоящее округление

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

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

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

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

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