exponenta event banner

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

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

Введение

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

Эти блоки находятся в библиотеке блоков Simulink ® в поддиапазоне «Таблицы подстановки»:

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

Рекомендуется использовать блок 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 sub-table selections dimensions» в диалоговом окне параметров блока. Заданное число интерпретируется как число размеров, выбираемых из наибольших размеров. Например, если имеется таблица 3-D и выбрано значение 2, это означает, что первое измерение будет интерполировано, а измерения 2 и 3 будут выбраны:

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

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

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

Использование блоков Prelookup и Interpolation Using Prelookup создает необходимость обеспечения соответствия длины параметра «Breakpoint data» в блоках Prelookup соответствующему измерению параметра «Table data» в соединенных блоках 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.