В отчете о преобразовании с фиксированной точкой можно выделить код MATLAB ®, который приводит к двойным, одиночным или дорогостоящим операциям с фиксированной точкой. Рекомендуется включить эти проверки при попытке достижения строгой конструкции с одной точкой или фиксированной точкой.
По умолчанию эти проверки отключены.
На странице «Преобразовать в фиксированную точку», чтобы открыть диалоговое окно «Параметры», щелкните стрелку «Параметры».![]()
В разделе «Печать и создание отчетов» установите для параметра «Выделить возможные проблемы типа данных» значение Yes.
По завершении преобразования откройте отчет о преобразовании с фиксированной точкой для просмотра выделения. Щелкните Показать отчет (View report) на вкладке Вывод проверки типа (Type Validation Output).
Создайте объект конфигурации кода с фиксированной точкой:
cfg = coder.config('fixpt');Установите HighlightPotentialDataTypeIssues свойства объекта конфигурации для true.
cfg.HighlightPotentialDataTypeIssues = true;
При попытке достичь строгой конструкции с одной точкой или с фиксированной точкой ручная проверка кода может быть трудоемкой и подверженной ошибкам. Эта проверка выделяет все выражения, которые приводят к двойной операции.
Для конструкции строгой одинарной точности укажите стандартную математическую библиотеку, поддерживающую реализации с одинарной точностью. Чтобы изменить библиотеку для проекта, на шаге Создать код (Generate Code) в диалоговом окне параметров проекта на вкладке Пользовательский код (Custom Code) задайте для библиотеки формул Стандартный (Standard) значение C99 (ISO).
Эта проверка выделяет все выражения, которые приводят к одной операции.
Дорогостоящая проверка операций с фиксированной точкой определяет возможности оптимизации для кода с фиксированной точкой. Он выделяет выражения в коде MATLAB, которые требуют громоздкого умножения или деления, дорогостоящего округления, дорогостоящего сравнения или многословных операций. Дополнительные сведения об оптимизации генерируемого кода с фиксированной точкой см. в разделе Советы по повышению эффективности генерируемого кода (Конструктор с фиксированной точкой).
Громоздкие операции чаще всего происходят из-за недостаточного диапазона выхода. Избегайте ввода данных для операции умножения или деления, которая имеет длину слова, превышающую базовый целочисленный тип процессора. Операции с большей длиной слова могут обрабатываться в программном обеспечении, но этот подход требует гораздо большего количества кода и значительно медленнее.
Традиционный рукописный код, особенно для управляющих приложений, почти всегда использует округление «без усилий». Например, для целочисленных чисел без знака и целых чисел с знаком дополнения два смещение вправо и отбрасывание битов эквивалентно округлению до пола. Чтобы получить результаты, сравнимые или лучшие, чем вы ожидаете от традиционного рукописного кода, используйте floor способ округления. Эта проверка определяет дорогостоящие операции округления в умножении и делении.
Операции сравнения генерируют дополнительный код, когда для выполнения сравнения требуется операция литья. Например, при сравнении целого числа без знака с целым числом со знаком один из входных сигналов должен быть сначала приведен к сигнатуре другого перед выполнением операции сравнения. Рассмотрите возможность оптимизации типов данных входных аргументов таким образом, чтобы приведение не требовалось в создаваемом коде.
Многословные операции могут оказаться неэффективными на оборудовании. Если тип входных или выходных данных операции превышает наибольший размер текста процессора, созданный код содержит многословные операции. Можно избежать многословных операций в создаваемом коде, указав локальный fimath свойства для переменных. Можно также вручную задать длины операций ввода и вывода слов, которые генерируют многословный код.