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

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

Введение

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

Откройте модель

Эти блоки могут быть найдены в библиотеке блоков Simulink® в подбиблиотеке Lookup Tables:

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

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

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

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

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

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

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