В рамках отчета преобразования фиксированной точки у вас есть опция, чтобы подсветить код MATLAB®, который приводит к двойным, одной, или дорогим операциям фиксированной точки. Рассмотрите включение этих проверок при попытке достигнуть строгого одного проекта, или фиксированной точки.
Эти проверки отключены по умолчанию.
На странице Convert to Fixed Point, чтобы открыть диалоговое окно Settings, кликают по стрелке Settings.
Под Plotting and Reporting, набор Highlight potential data type issues к Yes
.
Когда преобразование будет завершено, откройте отчет преобразования фиксированной точки просмотреть выделение. Нажмите View report во вкладке Type Validation Output.
Создайте объект настройки фиксированной точки:
cfg = coder.config('fixpt');
Установите свойство HighlightPotentialDataTypeIssues
объекта настройки к true
.
cfg.HighlightPotentialDataTypeIssues = true;
При попытке достигнуть проекта строго-одной или фиксированной точки, ручной контроль кода может быть длителен и подвержен ошибкам. Эта проверка подсвечивает все выражения, которые приводят к двойной операции.
Эта проверка подсвечивает все выражения, которые приводят к одной операции.
Дорогая проверка операций фиксированной точки идентифицирует возможности оптимизации для фиксированной точки. Это подсвечивает выражения в коде MATLAB, которые требуют громоздкого умножения или деления, дорогого округления, дорогого сравнения или операций многословных. Для получения дополнительной информации об оптимизации сгенерированной фиксированной точки смотрите Советы для того, чтобы Сделать Сгенерированный код Более эффективным.
Громоздкие операции чаще всего происходят из-за недостаточной области значений вывода. Избегайте входных параметров к умножению или разделите операцию, которая имеет размеры слова, больше, чем основной целочисленный тип вашего процессора. Операции с большими размерами слова могут быть обработаны в программном обеспечении, но этот подход требует намного большего количества кода и намного медленнее.
Традиционный рукописный код, специально для приложений управления, почти всегда не использует "усилия" округление. Например, для беззнакового целого и дополнительных целых чисел со знаком two, переключая право и пропуская биты эквивалентно округлению на пол. Чтобы получить результаты, сопоставимые с, или лучше, чем, что вы ожидаете от традиционного рукописного кода, используют метод округления floor
. Эта проверка идентифицирует дорогие операции округления в умножении и делении.
Операции сравнения генерируют дополнительный код, когда операция кастинга требуется, чтобы делать сравнение. Например, при сравнении беззнакового целого с целым числом со знаком, одни из входных параметров должны сначала быть брошены к со знаком из другого, прежде чем операция сравнения сможет быть выполнена. Рассмотрите оптимизацию типов данных входных параметров так, чтобы бросок не требовался в сгенерированном коде.
Операции многословные могут быть неэффективными на оборудовании. Когда операция имеет тип данных ввода или вывода, больше, чем самый большой размер слова вашего процессора, сгенерированный код содержит операции многословные. Можно избежать операций многословных в сгенерированном коде путем определения локальных свойств fimath
для переменных. Можно также вручную задать размеры слова ввода и вывода операций, которые генерируют код многословный.