Оптимизируйте интерполяционные таблицы для КПД памяти

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

  • Оптимизируйте существующий блок Lookup Table.

  • Сгенерируйте интерполяционную таблицу от блока Simulink®, включая блок Math Function или подсистему.

  • Сгенерируйте интерполяционную таблицу от функции или указателя на функцию.

Оптимизируйте существующую интерполяционную таблицу Используя оптимизатор интерполяционной таблицы

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

load_system('sldemo_fuelsys');
open_system('sldemo_fuelsys/fuel_rate_control/airflow_calc');
В этом примере показано, как оптимизировать Pumping Constant Блок Lookup Table.

  1. Чтобы открыть Оптимизатор Интерполяционной таблицы, во вкладке Apps, выбирают Lookup Table Optimizer.

  2. Выберите тип блока, который вы хотите оптимизировать. Чтобы оптимизировать существующую интерполяционную таблицу или блок Simulink, включая блок Math Function или подсистему, выбирают Simulink block. Чтобы сгенерировать приближение интерполяционной таблицы для указателя на функцию, выберите MATLAB Function Handle.

    В этом примере выберите Simulink block, чтобы оптимизировать Pumping Constant интерполяционная таблица. Нажмите Next.

  3. Под Block Information введите путь к Pumping Constant Блок Lookup Table. Выберите блок в модели, затем нажмите Get Current Block в Оптимизаторе Интерполяционной таблицы, чтобы заполнить блок path автоматически.

  4. Нажмите Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Оптимизатору Интерполяционной таблицы автоматически собирать информацию, необходимую для процесса оптимизации включая тип данных текущей производительности и вводить номер, тип данных и диапазон значений. Можно вручную отредактировать все эти поля, чтобы указать диапазоны и типы данных кроме в настоящее время заданных на блоке.

    • Задайте Desired Output Data Type сгенерированной интерполяционной таблицы как numerictype или Simulink.NumericType объект.

    • Задайте тип данных каждого входа с блоком как numerictype или Simulink.NumericType объект.

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

    В данном примере используйте текущие значения, заданные на модели. Нажмите Next.

  5. Задайте ограничения, чтобы использовать в оптимизации. Установите Output Error Tolerance, который приемлем для вашего проекта.

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

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

  6. Задайте позволенные размеры слова как вектор на основе типов, которые эффективны для вашей намеченной аппаратной цели. Например, если вы хотите позволить оптимизатору полагать, что только 8-, 16-, и 32-битные типы, задают [8 16 32] в поле Allowed Word Lengths (Vector).

  7. Чтобы задать дополнительные свойства для оптимизированной интерполяционной таблицы, нажмите LUT Specification. Для получения дополнительной информации о каждом из свойств смотрите FunctionApproximation.Options. В этом примере используйте значения по умолчанию в этих свойствах.

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

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

    Используя настройки по умолчанию, Оптимизатор Интерполяционной таблицы уменьшает память, используемую Pumping Constant Блок Lookup Table от 1 516 байтов до 572 байтов (62,27%).

    Нажмите Next.

  10. Нажмите Show Comparison Plot, чтобы просмотреть график исходного блока выход по сравнению с выходом новой оптимизированной интерполяционной таблицы.

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

Смотрите также

Приложения

Классы

Похожие темы