Оптимизатор Интерполяционной таблицы оптимизирует интервал точек останова и типы данных табличных данных, чтобы уменьшать память, используемую интерполяционной таблицей. Используя Оптимизатор Интерполяционной таблицы и его эквивалентную командную строку, вы можете:
Оптимизируйте существующий блок Lookup Table.
Сгенерируйте интерполяционную таблицу от блока Simulink®, включая блок Math Function или подсистему.
Сгенерируйте интерполяционную таблицу от функции или указателя на функцию.
Чтобы оптимизировать существующую интерполяционную таблицу, откройте модель, содержащую блок Lookup Table.
load_system('sldemo_fuelsys'); open_system('sldemo_fuelsys/fuel_rate_control/airflow_calc');
Чтобы открыть Оптимизатор Интерполяционной таблицы, в образцовом меню, выбирают Analysis> Data Type Design> Lookup Table Optimizer.
Выберите тип блока, который вы хотите оптимизировать. Чтобы оптимизировать существующую интерполяционную таблицу или блок Simulink, включая блок Math Function или подсистему, выбирают Simulink block. Чтобы сгенерировать приближение интерполяционной таблицы для указателя на функцию, выберите MATLAB Function Handle.
В этом примере выберите Simulink block, чтобы оптимизировать Качающую Постоянную интерполяционную таблицу. Нажмите Next.
Под Existing Block Information введите путь к блоку Lookup Table. Выберите блок в модели, затем нажмите Get Current Block в Оптимизаторе, чтобы заполнить блок path автоматически.
Нажмите кнопку Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Оптимизатору автоматически собирать информацию, необходимую для процесса оптимизации включая тип данных текущей производительности и вводить номер, тип данных и диапазон значений. Можно вручную отредактировать все эти поля, чтобы задать области значений и типы данных кроме в настоящее время заданных на блоке.
Задайте Desired Output Data Type сгенерированной интерполяционной таблицы как объект 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. Когда оптимизация завершена, оптимизатор сообщает о памяти об оптимизированной интерполяционной таблице. Можно отредактировать ограничения и запустить оптимизацию снова, чтобы достигнуть дальнейшего сокращения памяти.
Используя настройки по умолчанию, Оптимизатор Интерполяционной таблицы уменьшает память, используемую блоком Pumping Constant Lookup Table с 1 516 байтов до 942 байтов (37,86%).
Нажмите Next.
Нажмите Show Comparison Plot, чтобы просмотреть график исходного блока вывод по сравнению с выводом новой оптимизированной интерполяционной таблицы.
Нажмите Replace Original Function, чтобы сгенерировать новую интерполяционную таблицу с помощью оптимизированных настроек, найденных приложением и заменить исходный блок на новый блок.
FunctionApproximation.LUTMemoryUsageCalculator
| FunctionApproximation.LUTSolution
| FunctionApproximation.Options
| FunctionApproximation.Problem