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

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

  • Оптимизируйте существующий блок 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. Чтобы открыть Оптимизатор Интерполяционной таблицы, выберите Pumping Constant Блок Lookup Table. Во вкладке Lookup Table выберите 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, чтобы сгенерировать новую интерполяционную таблицу с помощью оптимизированных настроек, найденных приложением и заменить исходный блок.

    Новый блок является различной подсистемой маскированной, в которой активным вариантом является оптимизированный блок интерполяционной таблицы. Неактивным вариантом является исходный блок.

Измените настройки оптимизации и сгенерируйте новое аппроксимированное

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

  1. Дважды кликните блок Pumping Constant. Чтобы изменить настройки оптимизации, в диалоговом окне Параметров блоков, нажимают Redesign approximate.

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

    • Установите погрешность Absolute 0.01, или 1%.

    • Установите погрешность Relative 0.01, или 1%.

  3. Нажмите Optimize, чтобы оптимизировать интерполяционную таблицу с новыми опциями.

    Используя эти значения допуска, новая интерполяционная таблица использует только 362 байта памяти.

  4. Нажмите Next. На странице Results нажмите кнопку Replace Original Function, чтобы заменить первую итерацию блока приближения с этой новейшей итерацией.

  5. В модели дважды кликните блок Pumping Constant, чтобы открыть Параметры блоков. Параметры блоков отображают настройки, используемые в приближении

    Чтобы сделать исходный блок или подсистему активным вариантом, рядом с Select desired function version, выбирают Original.

    Чтобы удалить приближение интерполяционной таблицы из модели, в Параметрах блоков, нажимают Revert to original.

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

Приложения

Классы

Похожие темы