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.Чтобы открыть Lookup Table Optimizer, выберите Pumping Constant
Блок Lookup Table. Контекстно-зависимая вкладка Lookup Table появляется в панели инструментов Simulink. Во вкладке Lookup Table выберите Lookup Table Optimizer.
Выберите тип блока, который вы хотите оптимизировать. Чтобы оптимизировать блок Simulink или подсистему, включая существующий блок Lookup Table или блок Math Function, выбирают Simulink block or subsystem. Чтобы сгенерировать приближение интерполяционной таблицы для указателя на функцию, выберите MATLAB Function Handle.
В этом примере выберите Simulink block or subsystem, чтобы оптимизировать Pumping Constant
интерполяционная таблица. Нажмите Next.
Под Block Information введите путь к Pumping Constant
Блок Lookup Table. Выберите блок в модели, затем нажмите Get Current Block в Lookup Table Optimizer, чтобы заполнить блок path автоматически.
Нажмите Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Lookup Table Optimizer автоматически собирать информацию, необходимую для процесса оптимизации включая тип данных текущей производительности и вводить номер, тип данных и диапазон значений. Можно вручную отредактировать все эти поля, чтобы указать диапазоны и типы данных кроме в настоящее время заданных на блоке.
Задайте Desired Output Data Type сгенерированной интерполяционной таблицы как a numerictype
или Simulink.NumericType
объект.
Задайте тип данных каждого входа с блоком как numerictype
или Simulink.NumericType
объект.
Задайте минимальные и максимальные значения каждого входа сгенерированной интерполяционной таблицы как скаляры в таблице.
В данном примере используйте текущие значения, заданные на модели. Нажмите Next.
Задайте ограничения, чтобы использовать в оптимизации. Установите Output Error Tolerance, который приемлем для вашего проекта.
Абсолютная погрешность задана как абсолютное значение различия между исходным выходным значением и выходным значением оптимизированной интерполяционной таблицы.
Относительная погрешность измеряет ошибку относительно значения в той точке в виде неотрицательного.
Задайте позволенные размеры слова как вектор на основе типов, которые эффективны для вашей намеченной аппаратной цели. Например, если вы хотите позволить оптимизатору полагать, что только 8-, 16-, и 32-битные типы, задают [8 16 32]
в поле Allowed Word Lengths (Vector).
Чтобы задать дополнительные свойства для оптимизированной интерполяционной таблицы, нажмите LUT Specification. Для получения дополнительной информации о каждом из свойств смотрите FunctionApproximation.Options
. В этом примере используйте значения по умолчанию для этих свойств.
Задайте опции для оптимизации, такие как максимальное время или максимальное использование памяти для сгенерированной интерполяционной таблицы путем нажатия кнопки.
После того, как вы установите ограничения, нажмите Optimize.
Опционально, можно принять решение остановить решатель оптимизации, прежде чем решатель оптимизации будет завершен путем нажатия на Stop. Оптимизатор выберет лучшее решение, найденное в то время, когда кнопка Stop нажимается, и отобразите его в приложении.
Когда оптимизация завершена, оптимизатор сообщает о памяти об оптимизированной интерполяционной таблице. Можно отредактировать ограничения и запустить оптимизацию снова, чтобы достигнуть дальнейшего сокращения памяти.
Используя настройки по умолчанию, Lookup Table Optimizer уменьшает память, используемую Pumping Constant
Блок Lookup Table от 1 516 байтов до 505 байтов (66,69%).
Нажмите Next.
Нажмите Show Comparison Plot, чтобы просмотреть график исходного блока выход по сравнению с выходом новой оптимизированной интерполяционной таблицы.
Нажмите Replace Original Function, чтобы сгенерировать новую интерполяционную таблицу с помощью оптимизированных настроек, найденных приложением и заменить исходный блок.
Новый блок является различной подсистемой маскированной, в которой активным вариантом является оптимизированный блок интерполяционной таблицы. Неактивным вариантом является исходный блок.
Можно итеративно изменить блок приближения путем изменения настроек, используемых во время оптимизации, чтобы сгенерировать новую интерполяционную таблицу.
Дважды кликните блок Pumping Constant. Чтобы изменить настройки оптимизации, в диалоговом окне Параметров блоков, нажимают Redesign approximate.
В Lookup Table Optimizer нажмите Next, чтобы перейти к странице Create приложения. В этом примере отредактируйте абсолютные и относительные погрешности к немного большему значению так, чтобы можно было далее уменьшать размер интерполяционной таблицы.
Установите погрешность Absolute 0.01
, или 1%.
Установите погрешность Relative 0.01
, или 1%.
Нажмите Optimize, чтобы оптимизировать интерполяционную таблицу с новыми опциями.
Используя эти значения допуска, новая интерполяционная таблица использует только 304 байта памяти.
Нажмите Next. На странице Results нажмите кнопку Replace Original Function, чтобы заменить первую итерацию блока приближения с этой новейшей итерацией.
В модели дважды кликните блок Pumping Constant, чтобы открыть Параметры блоков. Параметры блоков отображают настройки, используемые для приближения
Чтобы сделать исходный блок или подсистему активным вариантом, рядом с Select desired function version, выбирают Original
.
Чтобы удалить приближение интерполяционной таблицы из модели, в Параметрах блоков, нажимают Revert to original.
FunctionApproximation.Problem
| FunctionApproximation.Options
| FunctionApproximation.LUTSolution
| FunctionApproximation.LUTMemoryUsageCalculator