Оптимизируйте сгенерированный код для блоков интерполяционной таблицы

Удалите код, который проверяет входные параметры вне области допустимого значения

По умолчанию сгенерированный код для следующих блоков интерполяционной таблицы включает условные операторы, которые проверяют на вне области допустимого индекса или входов:

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

БлокФлажок для выбора
1-D Lookup TableRemove protection against out-of-range input in generated code
2-D Lookup Table
n-D Lookup Table
Prelookup
Interpolation Using PrelookupRemove protection against out-of-range index in generated code

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

Чтобы проверить использование флажка, запустите следующие проверки Model Advisor и выполните рекомендуемые действия.

Проверка Model AdvisorКогда запускать проверку

By Product> Embedded Coder> Identify lookup table blocks that generate expensive out-of-range checking code

Для эффективности кода

By Product> Simulink Check> Modeling Standards> DO-178C/DO-331 Checks> Check usage of lookup table blocks

Для критически важных приложений

Для получения дополнительной информации о Model Advisor, смотрите Проверить свою модель Используя Model Advisor в Simulink® документация.

Оптимизируйте интервалы между точками по оси Х в интерполяционных таблицах

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

Фактор

Четная степень 2-х разнесенных данных

Равномерно разнесенные данные

Неравномерно разнесенные данные

Скорость выполнения

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

Скорость выполнения быстрее, чем для неравномерно разнесенных данных, потому что поиск положения быстрее, и интерполяция использует простое деление.

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

Ошибка

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

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

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

Использование ПЗУ

Использует меньше ПЗУ команд, но больше ПЗУ данных.

Использует меньше ПЗУ команд, но больше ПЗУ данных.

Использует больше командного ПЗУ, но меньше ПЗУ данных.

Использование оперативной памяти

Несущественный.

Несущественный.

Несущественный.

Следуйте этим рекомендациям:

  • Для типов данных с фиксированной точкой используйте точки прерывания с четным интервалом мощности 2.

  • Для типов данных, не являющихся фиксированными точками, используйте точки прерывания с четными интервалами.

Чтобы идентифицировать возможности повышения эффективности кода в блоках интерполяционной таблицы, запустите следующие проверки Model Advisor и выполните рекомендуемые действия:

  • By Product> Embedded Coder> Identify questionable fixed-point operations

  • By Product> Embedded Coder> Identify blocks that generate expensive saturation and rounding code

Для получения дополнительной информации о Model Advisor, смотрите Проверить модель Используя Model Advisor в документации Simulink.

Уменьшите копии данных для блоков интерполяционной таблицы

Когда вы используете переменные рабочей области для хранения данных таблицы и точек по оси Х для блоков Интерполяционной таблицы, а затем конфигурируете эти переменные для настраиваемости, можно избежать копий данных с помощью совпадающего типа данных для параметров блоков и переменной. Переменные рабочей области включают число MATLAB® переменные и Simulink.Parameter объекты, которые вы храните в рабочей области, такое как базовое рабочее пространство или в словаре данных. Если тип данных переменной меньше, чем тип данных параметров блоков, сгенерированный код неявно приводит тип данных переменной к типу данных параметров блоков. Это неявное приведение требует копии данных, которая потенциально может значительно увеличить потребление ОЗУ и замедлить скорость выполнения кода для больших векторов или матриц.

Для получения дополнительной информации смотрите Типы данных параметра в Сгенерированном коде (Embedded Coder) и Создайте Настраиваемый Параметр Калибровки в Сгенерированном Коде (Simulink Coder).

Эффективный код для размещения массива основных строк

Чтобы сгенерировать эффективный код для размещения массива с основной строкой, выберите параметр конфигурации модели Math and Data Types > Use algorithms optimized for row-major array layout. Алгоритмы основной строки выполняют с наилучшей скоростью и использованием памяти при работе с данными таблицы с размещением массива основной строки. Точно так же алгоритмы по умолчанию для основных столбцов лучше всего работают с размещением массива для основных столбцов. Рассмотрите использование алгоритма, который оптимизирован для заданного размещения массива, чтобы достичь наилучшей эффективности. Например, используйте алгоритмы основной строки, когда размещение массива установлено как основной алгоритм строки во время генерации кода.

Размещение массиваАлгоритмАлгоритм, удобный для кэша
Основной столбецОсновной столбецРекомендуется
Основная строкаОсновная строкаРекомендуется
Основная строкаОсновной столбецНе рекомендуется
Основной столбецОсновная строкаНе рекомендуется

Для получения дополнительной информации смотрите Преобразование макета основной строки в основную строку моделей с блоками интерполяционной таблицы (Simulink Coder).

См. также

| |

Похожие темы