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

Variable Fractional Delay

Задержка входного сигнала на изменяющееся во времени дробное число отсчетов.

variable fractional delay

Описание

Блок Variable Fractional Delay задерживает входной сигнал на заданное количество дробных отсчетов по каждому каналу входного сигнала. Блок также может одновременно вычислять несколько задержанных версий одного и того же сигнала.

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

Блок предполагает, что входные значения на порту Delay находятся между и . – это значение параметра Maximum delay (Dmax) in samples. Если значение задержки больше , то оно заменяется на , равно 0.

Порты

Вход

# In — входной сигнал
вектор | матрица

Details

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

Типы данных

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Fixed-point

Поддержка комплексных чисел

Да

# Delay — сигнал задержки
скаляр | вектор | матрица | массив N на D

Details

Сигнал задержки, заданный в виде скаляра, вектора, матрицы или массива N на D. Задержка может быть целым или дробным числом. Блок интерполирует сигнал для получения новых отсчетов через нецелые интервалы дискретизации. Сигнал на входе Delay должен иметь тот же тип данных, что и сигнал на входе In.

В таблице ниже показано влияние размера входного сигнала задержки на входные данные, когда для параметра Input processing установлено значение Columns as channels (frame based).

Входной сигнал Сигнал задержки Выходной сигнал Влияние сигнала задержки на выходной сигнал

на (один канал с размером кадра, равным )

скаляр

на

Одно значение задержки, применяемое к входному каналу.

на (один канал с размером кадра, равным )

на

на

Для каждого отсчета сигнала применяется соответствующее значение задержки.

на (один канал с размером кадра, равным )

на

на

Каждый столбец в выходных данных представляет собой входной сигнал с соответствующей задержкой. Величина задержки задается соответствующим элементом вектора задержки на входе.

на (один канал с размером кадра, равным )

на

на

Кроме того, задержка варьируется в каждом кадре от образца к образцу.

на ( каналов с размером кадра, равным )

скаляр

на

Одно значение задержки, применяемое ко всем входным каналам.

на ( каналов с размером кадра, равным )

на

на

Индивидуальное значение задержки для каждого входного канала.

на ( каналов с размером кадра, равным )

на

на

Значение задержки изменяется в пределах кадра от отсчета к отсчету. Одинаковый набор значений задержки для всех каналов.

на ( каналов с размером кадра, равным )

на

на

Значение задержки изменяется в пределах кадра от отсчета к отсчету. Различные значения задержки для каждого входного канала.

Пример 1.

[2 3 4 5]

Пример 2.

[2.5]

Пример 3.

[5.6]

Типы данных

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Fixed-point

Поддержка комплексных чисел

Нет

Выход

# OUT_1 — задержанный выходной сигнал
вектор | матрица

Details

Обработанный выходной сигнал, возвращаемый в виде вектора или матрицы. Тип и комплексность данных на выходе соответствуют типу и комплексности данных входному порту In.

В таблице ниже показано влияние размера входного сигнала задержки на входные данные, когда для параметра Input processing установлено значение Columns as channels (frame based).

Входной сигнал Сигнал задержки Выходной сигнал Влияние сигнала задержки на выходной сигнал

на (один канал с размером кадра, равным )

скаляр

на

Одно значение задержки, применяемое к входному каналу.

на (один канал с размером кадра, равным )

на

на

Для каждого отсчета сигнала применяется соответствующее значение задержки.

на (один канал с размером кадра, равным )

на

на

Каждый столбец в выходных данных представляет собой входной сигнал с соответствующей задержкой. Величина задержки задается соответствующим элементом вектора задержки на входе.

на (один канал с размером кадра, равным )

на

на

Кроме того, задержка варьируется в каждом кадре от образца к образцу.

на ( каналов с размером кадра, равным )

скаляр

на

Одно значение задержки, применяемое ко всем входным каналам.

на ( каналов с размером кадра, равным )

на

на

Индивидуальное значение задержки для каждого входного канала.

на ( каналов с размером кадра, равным )

на

на

Значение задержки изменяется в пределах кадра от отсчета к отсчету. Одинаковый набор значений задержки для всех каналов.

на ( каналов с размером кадра, равным )

на

на

Значение задержки изменяется в пределах кадра от отсчета к отсчету. Различные значения задержки для каждого входного канала.

Пример 1.

[0 0 0 0;0 0 0 0;1 0 0 0;5 2 0 0;2 1 3 0;1 6 4 4]

Пример 2.

[0 0 0 0;0 0 0 0;0.5 1.0 1.5 2.0;3 1.5 3.5 3.0;3.5 3.5 3.0 2.5;1.5 4.0 2.5 2.5]

Пример 3.

[0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0.4 0.8 1.2 1.6]

Типы данных

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Fixed-point

Поддержка комплексных чисел

Да

Параметры

Main

# Interpolation mode — метод интерполяции
Linear

Details

Укажите метод интерполяции. Используя этот метод, блок интерполирует сигнал, чтобы получить новые отсчеты с нецелыми интервалами дискретизации.

  • Linear – линейная интерполяция. В этом режиме блок сохраняет последних отсчетов, которые входной порт In получает для каждого канала. – это значение, которое вы указали в параметре Maximum delay (Dmax) in samples.

Значение по умолчанию

Linear

Имя для программного использования

InterpolationMode

Настраиваемый

Нет

# Maximum delay (Dmax) in samples — максимальная задержка
Целое число типа Int64

Details

Максимальная задержка, которую может произвести блок, . Значения задержки, превышающие этот максимум, обрезаются до .

Пример 1.

100

Пример 2.

30

Значение по умолчанию

100

Имя для программного использования

MaximumDelay

Настраиваемый

Нет

# Input processing — метод обработки входных данных
Columns as channels (frame based)

Details

Укажите, как блок должен обрабатывать входные данные. Вы можете установить для этого параметра значение:

  • Columns as channels (frame based) (по умолчанию) – если выбрать этот метод, блок обрабатывает каждый столбец входных данных как отдельный канал. Блок рассматривает каждый из столбцов входного сигнала как независимые каналы, содержащие последовательных отсчетов.

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

От размерности сигнала на порту Delay зависит метод обработки сигнала:

  • Если сигнал на порту Delay – скаляр, то он используется для равномерной задержки всех отсчетов в каждом канале.

  • Если сигнал на порту Delay – вектор-столбец длиной , то каждому отсчету входного сигнала соответствует свое значение задержки. В случае многоканального входа, один и тот же вектор задержек применяется к каждому каналу входного сигнала.

  • Если сигнал на порту Delay – строка длиной , то каждый элемент строки задержек соответствует своему каналу входного сигнала.

  • Если сигнал на порту Delay – матрица М на , то она содержит различные задержки для каждого соответствующего элемента входного сигнала.

Например, если – это матрица размером М на , [v(1) v(2) … v(Mi)], то к первому отсчету входного сигнала применяется задержка v(1), ко второму – v(2) и так далее. Блок применяет набор дробных задержек, содержащихся в , одинаково к каждому каналу многоканального входа.

Значение по умолчанию

Columns as channels (frame based)

Имя для программного использования

InputProcessing

Настраиваемый

Нет

# Initial conditions — начальные значения
Скаляр / массив вещественных и/или комплексных чисел

Details

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

Для входной матрицы на вы можете задать параметр следующим образом:

  • Скалярное значение, чтобы задать фиксированные начальные условия. Блок заполнит указанным значением каждый отсчет каждого канала в своей внутренней памяти.

  • Изменяющиеся во времени начальные условия, которые зависят от метода интерполяции. Чтобы задать разные изменяющиеся во времени начальные условия для каждого канала, задайте этот параметр следующим образом:

    • Задайте для параметра Initial conditions массив размером на на , где – значение параметра Maximum delay (Dmax) in samples.

Пример 1.

4

Пример 2.

randn(1,3,104)

Значение по умолчанию

0

Имя для программного использования

InitialConditions

Настраиваемый

Нет

# Disable direct feedthrough by increasing minimum possible delay by one — отключение прямого прохода
Логический тип

Details

Установите этот флажок, чтобы отключить прямой проход, увеличив минимально возможное значение задержки.

Если установить для параметра Input processing значение Columns as channels (frame based), блок увеличивает минимально возможное значение задержки на frame size - 1.

Установка этого флажка позволяет использовать блок Variable Fractional Delay в цепях обратной связи.

Значение по умолчанию

false (выключено)

Имя для программного использования

DisableDirectFeedthrough

Настраиваемый

Нет

Дополнительно

Алгоритмы

Значение сигнала задержки, заданное на порту Delay, служит индексом для памяти блока, U, в которой хранятся, как минимум, последних образцов, полученных на порт In для каждого канала.

Например, целочисленная задержка 5 на скалярной входной последовательности извлекает и выводит пятый отсчет входного сигнала из памяти блока, U(6). Блок вычисляет дробные задержки путем интерполяции между сохраненными выборками. Для интерполяции значений сигнала на нецелых интервалах дискретизации блок использует линейный метод.

Метод линейной интерполяции

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

Для векторных входных данных выходной вектор, , вычисляется с помощью следующего соотношения:





где

  • – индекс текущего отсчета;

  • – дробная часть задержки;

  • – целочисленная часть задержки;

  • – дробная часть задержки;

  • – вектор входных данных;

  • – вектор выходных данных;

  • , – два отсчета в памяти, ближайшие к указанной задержке;

  • – расстояние, в отсчетах, между текущим индексом и ближайшей точкой в линии интерполяции.

Блок хранит последних отсчетов, полученных на вход для каждого канала, где – максимальная заданная задержка. представляет собой сохраненные отсчеты.

Смотрите также