Документация Engee

Prelookup

Вычисляет номер и долю интервала для интерполяции.

preelookup

Описание

Блок Prelookup вычисляет номер и долю интервала, которые определяют, как его входное значение u соотносится с набором опорных точек.

Поддерживаемые операции с блоками

Чтобы использовать блок Prelookup, необходимо указать набор значений опорных точек. При этом можно выбрать, указать ли значения опорных точек непосредственно в диалоговом окне или передать их через порт ввода bp, установив для параметра Source значение Dialog или Input port.

Блок Prelookup генерирует пару выходов для каждого входного значения u путем вычисления:

  • индекса опорной точки, значение который меньше или равно u и образует интервал, содержащий u.

  • доли интервала в диапазоне 0 ≤ f < 1, представляющей нормализованное положение u на интервале между опорной точкой с найденным индексом и следующей опорной точкой.

Например, если набор опорных точек равен [0 5 10 20 50 100] и входное значение u равно 55, то индекс равен 4, а доля интервала — 0.1.

Значение индекса отсчитывается от единицы.

Доля интервала может быть отрицательной или больше 1 в случае выхода входного сигнала за пределы диапазона.

Порты

Вход

Port_1 — входной сигнал u
скаляр | вектор | матрица

Блок Prelookup принимает сигналы с вещественными значениями любого числового типа данных, поддерживаемого Engee, кроме Bool.

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, UInt128

bp — опорные точки
одномерный вектор

Блок Prelookup принимает в качестве опорных точек останова сигналы с вещественными значениями любого числового типа данных, поддерживаемого Engee, кроме Bool.

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, UInt128

Выход

k — индекс интервала, содержащего вход u
скаляр | вектор | матрица

Индекс k является целым вещественным числом, определяющим интервал, содержащий входной сигнал u.

Значение индекса отсчитывается от единицы.

Типы данных: Float64

f — дробь, представляющая нормализованное положение входа u в интервале k
скаляр | вектор | матрица

Дробь f представляет нормализованное положение входа u в интервале k.

Типы данных: Float64

Параметры

Value — значения опорных точек
[10:10:110] (по умолчанию)

Опорные точки. Набор опорных точек должен представлять собой строго монотонно возрастающий вектор, содержащий два или более элементов.

Source — источник значений для опорных точек
Dialog (по умолчанию) | Input port

Источник значений опорных точек:

  • Dialog — значения опорных точек заданны в параметре Value.

  • Input port — значения опорных точек будут получены через соответствующий входной порт.

Index search method — метод поиска номера интервала
Binary search (по умолчанию) | Linear search | Evenly spaced points

Каждый метод поиска имеет преимущества в скорости в различных ситуациях:

  • Для равномерно расположенных опорных точек (например, 10, 20, 30 и так далее) оптимальная скорость достигается при выборе Evenly spaced points для расчета индексов таблицы. Этот алгоритм использует только первые две точки останова набора для определения смещения и расстояния между остальными точками.

  • Для неравномерно распределенных опорных точек рекомендуется:

    • Linear search — если входные значения для u не сильно меняются между шагами счета.

    • Binary search — если входные значения для u меняются более чем на один-два интервала таблицы за один шаг счета.

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

Extrapolation method — способ обработки входных значений, выходящих за пределы диапазона
Clip (по умолчанию) | Linear

Варианты: Clip или Linear.

Разница между вариантами:

Clip
Вход блока Выход блока

Меньше первой точки

Номер = номер первой точки (например, 1)

Доля = 0

Больше последней точки

Номер = номер предпоследней точки

Доля = 1

Предположим, что диапазон равен [1 2 3], и вы выбрали этот вариант. Если u равно 0,5, номер равен 1, доля интервала равна 0. Если u равно 3,5, индекс равен 2, доля интервала равна 1.

Linear
Вход блока Выход блока

Меньше первой точки

Номер = номер первой точки (например, 1)

Доля = линейное расстояние от u до первой точки

Больше последней точки

Номер = номер предпоследней точки

Доля = расстояние от предпоследней точки до u

Предположим, что диапазон равен [1 2 3], и вы выбрали этот вариант. Если u равно 0,5, номер равен 1, а доля интервала -0,5. Если u равно 3,5, индекс равен 2, а доля интервала 1,5.

Output selection — выходные сигналы
Index and fraction (по умолчанию) | Index only
  • Index only — выводит только номер, без доли.

  • Index and fraction — выводит номер и долю в виде отдельных сигналов.

Дополнительные возможности

Генерация Си кода: Да