ΣSigmaStudio English

Линейный интерполятор


Линейный интерполятор сопоставляет входную функцию с набором точек данных, хранящихся в индексной таблице. Если входная функция не совпадает точно с точкой таблицы, выходное значение аппроксимируется с помощью линейного интерполянта, то есть линии, проведенной между двумя ближайшими точками индексной таблицы.
Линейная интерполяция — это распространенное вычисление для множества приложений, таких как компьютерная графика. В SigmaStudio ее можно использовать для создания передаточной функции «вход-выход» для аудио- или управляющих сигналов без необходимости в большом количестве точек таблицы или вычислений.
Линейный интерполятор

Входные пины

NameFormat [int/dec] - [control/audio]Function Description
Pin 0: Inputinteger or decimal - control or audioВходной сигнал, который будет сопоставлен с помощью функции линейной интерполяции

Выходные пины

NameFormat [int/dec] - [control/audio]Function Description
Pin 0: Outputinteger or decimal - control or audioВыходной сигнал, который является результатом функции линейной интерполяции

Элементы управления GUI

GUI Control NameDefault ValueRangeFunction Description
Max5-15.99 to +15.99Максимально допустимое входное значение. Для полномасштабного аудио используйте 1.
Min1-15.99 to +15.99Минимально допустимое входное значение. Для полномасштабного аудио используйте -1.
Pts51 to 100Количество точек в функции линейной интерполяции
Table[1, 2, 3, 4, 5]-16 to 15.9999999Точки в функции линейной интерполяции. Входной сигнал будет сопоставлен с этим набором данных.

Параметры DSP

GUI NameCompiler NameFunction Description
TableLinearIntAlg1_1Первая точка в индексной таблице
TableLinearIntAlg1_p1_1Вторая точка в индексной таблице
TableLinearIntAlg1_p1_1_autoincremented …Третья и последующие точки в индексной таблице
MinLinearIntAlg1Min_2Минимальное входное значение
MaxLinearIntAlg1Q_2Разница между минимальным и максимальным входным значением
PtsLinearIntAlg1Number_2Количество точек в индексной таблице минус 1. Например, если в таблице 3 точки, этот параметр будет равен 2.

Описание алгоритма

Ячейка линейной интерполяции выполняет интерполяцию набора данных.

Вход ячейки линейной интерполяции должен находиться между заданными минимальным и максимальным значениями. Входные значения между минимальным и максимальным входными значениями линейно сопоставляются с индексным номером от 0 до n, где n представляет максимальный индекс.

Например, если input = min, то выбирается индекс 0. Если input = max, то выбирается индекс n. Если входное значение находится ровно посередине между двумя индексами, то выходное значение будет средним значением двух соответствующих точек в наборе данных.

Процесс сопоставления входа с индексом показан графически ниже:

Описание алгоритма

Фактическое выходное значение ячейки зависит от значений набора данных, хранящихся в индексной таблице. Пример ниже показывает таблицу с 6 точками. Если index = min, то выходным значением будет значение точки, хранящейся в индексе 0. Если index = 5, то выходным значением будет значение точки, хранящейся в индексе 5. Если, например, входное значение находится на одной трети пути между индексами 2 и 3, то выходное значение будет (index_2 * 2/3) + (index_3 * 1/3). Это проиллюстрировано оранжевой точкой на графике ниже — выходное значение ячейки будет равно смещению оранжевой точки по вертикальной оси. Синие точки представляют значения, хранящиеся в индексной таблице. Линии, соединяющие синие точки, представляют «интерполянты». Выходное значение ячейки всегда будет лежать на интерполянте.

Описание алгоритма

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

Пример

Пример ниже показывает ячейку линейного интерполятора, настроенную для интерполяции входных значений от 10 до 11. Входное значение, подаваемое ячейкой DC Input, равно 10.5. Поскольку 10.5 — это ровно середина между 10 и 11, выводится средняя точка таблицы, 3. Ячейка DSP Readback используется для подтверждения выходного значения ячейки линейного интерполятора.

Пример

Детали алгоритма

Путь в ToolboxBasic DSP - Index LUT - Linear Interpolator
Поддерживаемые ядраADAU1761
ADAU1781
ADAU144x
ADAU170x
AD1940
Поддержка «Grow Algorithm»yes
Поддержка «Add Algorithm»no
На основе подпрограммы/циклаno
Program RAM18
Data RAM6
Parameter RAM5*

*На основе индексной таблицы с двумя точками. По мере добавления точек использование Parameter RAM будет увеличиваться на 1 на каждый индекс.

Linear Interpolator в SigmaStudio: настройка и параметры

Linear Interpolator — это DSP-блок из раздела Basic DSP в среде SigmaStudio, предназначенный для сопоставления входного сигнала с набором точек данных, хранящихся в индексной таблице. Алгоритм относится к классу интерполяторов и позволяет создавать произвольные передаточные функции «вход-выход» для аудио- или управляющих сигналов без необходимости использования большого количества вычислительных ресурсов. Принцип работы основан на линейной аппроксимации: если входное значение не совпадает точно с точкой таблицы, выходное значение рассчитывается как точка на линии, проведенной между двумя ближайшими узлами индексной таблицы. Входной сигнал должен находиться в диапазоне, заданном параметрами Min и Max. Значения в этом диапазоне линейно сопоставляются с индексом от 0 до n, где n — максимальный индекс таблицы. Например, если вход равен Min, выбирается индекс 0, если Max — индекс n. При попадании ровно в середину между двумя индексами выходное значение будет средним двух соответствующих точек набора данных. В графическом интерфейсе SigmaStudio доступны четыре элемента управления. Параметр Max задает максимально допустимое входное значение (по умолчанию 5, для полномасштабного аудио следует установить 1). Min определяет минимальное входное значение (по умолчанию 1, для аудио — минус 1). Параметр Pts задает количество точек в функции интерполяции (от 1 до 100). Поле Table содержит сами точки набора данных, в диапазоне от -16 до 15.9999999, которые определяют форму передаточной характеристики.