Использование блоков Prelookup и Interpolation

В этих примерах показано, как использовать блоки Prelookup и Interpolation с использованием Prelookup.

Введение

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

Эти блоки находятся в библиотеке блоков Simulink ® в сублибрарии Интерполяционные таблицы:

Оптимизация: PreLookup и интерполяция с использованием блоков Prelookup

Рассмотрите использование блока PreLookup для таблиц с интенсивным поиском по индексу в наборах точек по оси Х. Блоки Prelookup позволяют вам выполнить поиск по индексу один раз и повторно использовать результат во многих интерполяциях таблицы. В этой модели три результата поиска по индексу используются в пяти блоках в общей сложности десяти применениях. Эквивалентные регулярные интерполяционные таблицы, такие как пример справа, потребовали бы десяти поисков по индексу вместо трех.

Оптимизация: опция выбора подтаблицы в интерполяции с использованием блоков Prelookup

Один из блоков интерполяции в этой модели сконфигурирован с помощью возможности: последующие измерения таблицы n-D могут быть помечены как «размерности выбора», что означает, что вход для этой размерности является целым числом, используемым только для того, чтобы сделать выбор подтаблицы, такой как выбор 2-D плоскости из таблицы 3-D. Затем подтаблица интерполируется нормально.

Интерполяция подтаблиц может сэкономить колоссальные объемы расчетов. Для каждой размерности, исключенной из интерполяции, расчет почти наполовину. Поскольку N-мерная интерполяция принимает (2 ^ N) -1 отдельные операции интерполяции (y = ylow + f * (yhigh-ylow)), только одна размерность выбора может почти удвоить скорость интерполяции. Экстремальный пример: таблица 5-D с тремя измерениями выбора подтаблицы и 2-D интерполяции: 5-D интерполяция займет 2 ^ 5-1 = 31 интерполяция, но 2-D интерполяция занимает только 2 ^ 2 - 1 = 3.

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

Подтаблица или мультитаблица режим операции активируется путем установки положительного целого числа для параметра 'Number of subb-table размерностей в диалоговом окне параметров блоков. Количество, которое вы задаете, интерпретируется как количество размеров, выбранных из самых высоких размерностей. Для примера, если у вас есть таблица 3-D и вы выбираете 2, это означает, что первое измерение будет интерполировано и размерности 2 и 3 будут выбраны:

ПРИМЕЧАНИЕ: Вы можете удалить подсветку из модели с помощью элемента меню View/Remove highlighting или этой команды:

set_param(mdl,'HiliteAncestors','none')

Проверка согласованности точек по оси Х и данных таблицы

Использование блоков Prelookup и Interpolation Using Prelookup вводит необходимость в том, чтобы длина параметра 'Breakpoint данных' в блоках Prelookup совпадала с соответствующей размерностью параметра 'Таблица данных' в связанных блоках Interpolation Using Prelookup. Simulink ® всегда проверяет согласованность между этими двумя блоками при обновлении блок-схемы. Simulink сообщает об ошибках, если он встречается с несогласованными данными точек по оси Х и данных таблицы. Для примера:

try
    evalc(['sim(', mdl, ')']);
catch E
    disp(['Error:', E.message]);
end
Error:The range of values for input port k2 of block '<a href="matlab:open_and_hilite_hyperlink ('sldemo_bpcheck/Interpolation on an 11x11 table ERROR IN DIM 2 ','error')">sldemo_bpcheck/Interpolation on an 11x11 table ERROR IN DIM 2 </a>' does not match the size of the corresponding table dimension of 11. Specify a different table dimension or modify the range of values for input port k2.