Используя блоки предварительного поиска и интерполяции

Это, которое показывают примеры, как использовать Предварительный поиск и Интерполяцию Используя блоки Перед поиском.

Введение

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

Эти блоки находятся в библиотеке блоков Simulink® в подбиблиотеке Lookup Tables:

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

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

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

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

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

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

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

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

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

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

Используя Предварительный поиск и Интерполяцию Используя Предварительный поиск блоки вводят потребность гарантировать, что длина 'Параметра' данных о точке останова в блоках Перед поиском совпадает с соответствующей размерностью 'Табличного параметра' данных в связанной Интерполяции Используя блоки Перед поиском. 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.