dsp. VariableFractionalDelay

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

Описание

Примечание

Свойство DirectFeedthrough было удалено. Удалите все экземпляры этого свойства в вашем коде MATLAB®. Для получения дополнительной информации см. Вопросы совместимости.

Система dsp.VariableFractionalDelay object™ задерживает входной сигнал конкретным количеством дробных выборок вдоль каждого канала входа. Объект может также одновременно вычислить несколько задержанных версий (касания) того же сигнала. Для примера смотрите, что Задержка Сигнала Использует Мультикасание Дробная Задержка.

Объект интерполирует входной сигнал, чтобы получить новые выборки в интервалах выборки нецелого числа. Можно установить свойство InterpolationMethod на 'Linear', 'FIR' или 'Farrow'. Поддержка объектов изменяющиеся во времени значения задержки. Таким образом, значение задержки может меняться в кадре от выборки до выборки. Можно также задать максимальное значение задержки при помощи свойства MaximumDelay. Задержите значения, больше, чем максимум отсекается к максимуму.

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

  1. Создайте объект dsp.VariableFractionalDelay и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

vfd = dsp.VariableFractionalDelay
vfd = dsp.VariableFractionalDelay(Name,Value)

Описание

пример

vfd = dsp.VariableFractionalDelay создает переменный дробный Системный объект задержки, который задерживает дискретное время, введенное изменяющимся во времени дробным количеством демонстрационных периодов, как задано вторым входом.

vfd = dsp.VariableFractionalDelay(Name,Value) создает переменный дробный Системный объект задержки с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.

Пример: dsp. VariableFractionalDelay ('MaximumDelay', 50);

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

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

  • 'Linear' – Объект использует линейную интерполяцию.

  • 'FIR' – Объект реализует многофазный КИХ-фильтр интерполяции, чтобы интерполировать значения.

  • 'Farrow' – Объект использует Лагранжев метод, чтобы интерполировать значения.

Для получения дополнительной информации на этих методах, см. Алгоритмы.

Поясной из КИХ-фильтра интерполяции, заданного как положительное целое число в области значений [1 65535].

Для периодических сигналов большее значение этого свойства, которое указывает на фильтр высшего порядка, приводит к лучшей оценке задержанной выходной выборки. Значение свойства 4 - 6, который соответствует 7-му порядку к фильтру 11-го порядка, обычно соответствует.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

Длина КИХ-фильтра, реализованного с помощью структуры Фэрроу, заданной как целое число, больше, чем или равный 2. Если длина равняется 2, фильтр выполняет линейную интерполяцию. Значение длины фильтра определяет порядок полинома, используемого для лагранжевой интерполяции.

Пример 4

Пример: 10

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'Farrow'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество точек интерполяции на входную выборку, на которой вычисляется уникальный КИХ-фильтр интерполяции, задало как положительное целое число в области значений [2 65535].

Пример: 20

Пример 5

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нормированная входная пропускная способность, в которой можно ограничить интерполированные выходные выборки, заданные как действительный скаляр в области значений (0 1]. Значение 1 равняется частоте Найквиста или половине частоты дискретизации, Fs. Используйте это свойство использовать в своих интересах bandlimited содержимое частоты входа. Например, если входной сигнал не имеет содержимого частоты выше Fs/4, можно задать значение 0.5.

Пример: 0.5

Пример: 0.8

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

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

Для M-by-N входная матрица, U, можно установить свойство InitialConditions можно следующим образом:

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

  • Размерности, которые вы задаете для изменяющихся во времени начальных условий, зависят от значения свойства InterpolationMethod.

    • Когда InterpolationMethod установлен в 'Linear', задайте InitialConditions как 1-by-N-by-D, где D является значением свойства MaximumDelay.

    • Когда InterpolationMethod установлен в 'FIR' или 'Farrow', задайте InitialConditions как 1-by-N-by-(D +L) массив, где D является значением свойства MaximumDelay. Для КИХ-интерполяции L является значением свойства FilterHalfLength. Для Неоплодотворенной интерполяции L равняется floor половины значения свойства FilterLength: floor(FilterLength/2).

Пример 1

Пример: randn (1 3 104)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Максимальная задержка, которую объект может произвести для любой выборки, заданной как целое число в области значений [0 65535]. Объект отсекает входные значения задержки, больше, чем MaximumDelay к тому максимальному значению.

Пример: 100

Пример: 10

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Меры, принятые для маленького входа, задерживают значения, когда объект использует КИХ-метод интерполяции.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'.

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

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'Farrow'.

Свойства фиксированной точки

Режим Rounding для операций фиксированной точки, заданных как одно из следующего:

  • 'Zero'

  • 'Ceiling'

  • 'Convergent'

  • 'Floor'

  • 'Nearest'

  • 'Round'

  • 'Simplest'

Для получения дополнительной информации смотрите округление режима.

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

  • 'Wrap' – Объект переносит результат своих операций фиксированной точки.

  • 'Saturate' – Объект насыщает результат своих операций фиксированной точки.

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

Тип данных коэффициентов в этом объекте, заданном как одно из следующего:

  • 'Same word length as input' – Объект задает содействующий размер слова, чтобы совпасть с тем из входа. Дробная длина вычисляется, чтобы получить самую лучшую точность.

  • 'Custom' – Содействующий тип данных задан как пользовательский числовой тип через свойство CustomCoefficientsDataType.

Для получения дополнительной информации о содействующем типе данных этот объект использование смотрите раздел Fixed Point.

Содействующее слово и дробные длины, заданные как числовой тип автосо знаком с размером слова 32.

Пример: numerictype ([], 16)

Зависимости

Это свойство применяется только, когда вы устанавливаете CoefficientsDataType на 'Custom'.

Тип данных значения полинома продукта, заданного как одно из следующего:

  • 'Same as first input' – Объект задает тип данных значения полинома продукта, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип данных значения полинома продукта задан как пользовательский числовой тип через свойство CustomProductPolynomialValueDataType.

Для получения дополнительной информации о типе данных значения полинома продукта этот объект использование смотрите раздел Fixed Point.

Зависимости

Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'.

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

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow' и ProductPolynomialValueDataType к 'Custom'.

Тип данных значения полинома аккумулятора, заданного как одно из следующего:

  • 'Same as first input' – Объект задает тип данных значения полинома аккумулятора, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип данных значения полинома аккумулятора задан как пользовательский числовой тип через свойство CustomAccumulatorPolynomialValueDataType.

Для получения дополнительной информации о типе данных значения полинома аккумулятора, который использует этот объект, смотрите раздел Fixed Point.

Зависимости

Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'.

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

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow' и AccumulatorPolynomialValueDataType к 'Custom'.

Тип данных значения полинома множимого, заданного как одно из следующего:

  • 'Same as first input' – Объект задает тип данных значения полинома множимого, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип данных значения полинома множимого задан как пользовательский числовой тип через свойство CustomMultiplicandPolynomialValueDataType.

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

Зависимости

Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'.

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

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow' и MultiplicandPolynomialValueDataType к 'Custom'.

Тип данных продукта вывод в этом объекте, заданном как одно из следующего:

  • 'Same as first input' – Объект задает тип выходных данных продукта, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип выходных данных продукта задан как пользовательский числовой тип через свойство CustomProductDataType.

Для получения дополнительной информации о типе выходных данных продукта смотрите Типы данных Умножения и раздел Fixed Point.

Word и дробные длины типа данных продукта, заданного как числовой тип автосо знаком с размером слова 32 и дробной длиной 10.

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете ProductDataType на 'Custom'.

Тип данных операции накопления в этом объекте, заданном как одно из следующего:

  • 'Same as product' – Объект задает тип данных аккумулятора, чтобы совпасть с тем из типа выходных данных продукта.

  • 'Same as first input' – Объект задает тип данных аккумулятора, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип данных аккумулятора задан как пользовательский числовой тип через свойство CustomAccumulatorDataType.

Для получения дополнительной информации о типе данных аккумулятора этот объект использование смотрите Фиксированную точку.

Word и дробные длины типа данных аккумулятора, заданного как числовой тип автосо знаком с размером слова 32 и дробной длиной 10.

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете AccumulatorDataType на 'Custom'.

Тип данных объектного вывода, заданного как одно из следующего:

  • 'Same as accumulator' – Объект задает тип выходных данных, чтобы совпасть с тем из типа выходных данных аккумулятора.

  • 'Same as first input' – Объект задает тип выходных данных, чтобы совпасть с тем из ввода данных.

  • 'Custom' – Тип выходных данных задан как пользовательский числовой тип через свойство CustomOutputDataType.

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

Word и дробные длины типа выходных данных, заданного как числовой тип автосо знаком с размером слова 32 и дробной длиной 10.

Пример: numerictype ([], 30,5)

Зависимости

Это свойство применяется только, когда вы устанавливаете OutputDataType на 'Custom'.

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

vfdOut = vfd(input,d)

Описание

пример

vfdOut = vfd(input,d) задерживает вход к переменному дробному Системному объекту задержки выборками d. d должен быть меньше чем или равен значению, которое вы задаете в свойстве MaximumDelay объекта.

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

Входные параметры

развернуть все

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

Этот входной сигнал переменного размера поддержки объектов. Таким образом, можно изменить входной формат кадра (количество строк) даже после вызова алгоритма. Однако количество каналов должно остаться постоянным. Для примера смотрите Поддержку Сигнала Переменного Размера Входа и Задержите Сигналы.

Пример: [1 2 3 4; 5 1 4 2; 2 6 2 3; 1 2 3 2; 3 4 5 6; 1 2 3 1]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Вход задержки, заданный как скаляр, вектор, матрица или N-D массив. Задержка может быть целым числом или дробным значением. Когда вход задержки является дробным значением, объект интерполирует сигнал получить новые выборки в интервалах выборки нецелого числа. Вход задержки должен иметь совпадающий тип данных как ввод данных.

Этот переменный размер поддержки объектов задерживает сигнал. Таким образом, можно измениться один или обе из размерностей сигнала задержки после вызова алгоритма. Однако объект должен убедиться, что получившееся количество выходных каналов остается постоянным. Для примера смотрите Поддержку Сигнала Переменного Размера Входа и Задержите Сигналы.

Таблица показывает эффект размерности входа задержки на вводе данных.

Ввод данныхВход задержкиВывод Эффект входа задержки на вводе данных
N-by-1 (один канал с форматом кадра равняются N),скалярN-by-1Одно значение задержки применилось к входному каналу
N-by-1 (один канал с форматом кадра равняются N),N-by-1N-by-1Задержитесь значение отличается в кадре от выборки до выборки
N-by-1 (один канал с форматом кадра равняются N),1 PN-by-PP касается на канал. Каждый столбец в выводе является задержанной версией входа. Значение задержки задано соответствующим элементом во входном векторе задержки.
N-by-1 (один канал с форматом кадра равняются N),N-by-PN-by-PP касается на канал. Кроме того, задержка отличается в каждом кадре от выборки до выборки.
N-by-L (L образовывает канал с форматом кадра, равным N),скалярN-by-LОдно значение задержки применилось ко всем входным каналам
N-by-L (L образовывает канал с форматом кадра, равным N),1 LN-by-LУникальное значение задержки для каждого входного канала
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-1N-by-LЗадержитесь значение отличается в кадре от выборки до выборки. Тот же набор значений задержки для всех каналов.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-LN-by-LЗадержитесь значение отличается в кадре от выборки до выборки. Различные значения задержки для каждого входного канала.
N-by-L (L образовывает канал с форматом кадра, равным N),1 1 PN-by-L-by-PКаналы L. P касается на канал. Та же задержка всех каналов.
N-by-L (L образовывает канал с форматом кадра, равным N),1 L PN-by-L-by-PКаналы L. P касается на канал. Задержка отличается через каналы.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-1-by-PN-by-L-by-PКаналы L. P касается на канал. Задержка отличается в кадре от выборки до выборки. Тот же набор значений задержки для каждого канала.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-L-by-PN-by-L-by-PКаналы L. P касается на канал. Задержка отличается в кадре от выборки до выборки. Различный набор значений задержки для каждого канала.

Пример: [2 3 4 5]

Пример: [2.5]

Пример: [5.6]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Выходные аргументы

развернуть все

Задержанный выходной параметр, возвращенный как вектор или матрица. Размер, тип данных и сложность вывода совпадают с размером, типом данных и сложностью ввода данных.

Таблица показывает, как ввод данных и входные размерности задержки влияют на выходные размерности:

Ввод данныхВход задержкиВывод Эффект входа задержки на вводе данных
N-by-1 (один канал с форматом кадра равняются N),скалярN-by-1Одно значение задержки применилось к входному каналу
N-by-1 (один канал с форматом кадра равняются N),N-by-1N-by-1Задержитесь значение отличается в кадре от выборки до выборки
N-by-1 (один канал с форматом кадра равняются N),1 PN-by-PP касается на канал. Каждый столбец в выводе является задержанной версией входа. Значение задержки задано соответствующим элементом во входном векторе задержки.
N-by-1 (один канал с форматом кадра равняются N),N-by-PN-by-PP касается на канал. Кроме того, задержка отличается в каждом кадре от выборки до выборки.
N-by-L (L образовывает канал с форматом кадра, равным N),скалярN-by-LОдно значение задержки применилось ко всем входным каналам
N-by-L (L образовывает канал с форматом кадра, равным N),1 LN-by-LУникальное значение задержки для каждого входного канала
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-1N-by-LЗадержитесь значение отличается в кадре от выборки до выборки. Тот же набор значений задержки для всех каналов.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-LN-by-LЗадержитесь значение отличается в кадре от выборки до выборки. Различные значения задержки для каждого входного канала.
N-by-L (L образовывает канал с форматом кадра, равным N),1 1 PN-by-L-by-PКаналы L. P касается на канал. То же касание для всех каналов.
N-by-L (L образовывает канал с форматом кадра, равным N),1 L PN-by-L-by-PКаналы L. P касается на канал. Касания отличаются через каналы.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-1-by-PN-by-L-by-PКаналы L. P касается на канал. Задержка отличается в кадре от выборки до выборки. Тот же набор значений задержки для каждого канала.
N-by-L (L образовывает канал с форматом кадра, равным N),N-by-L-by-PN-by-L-by-PКаналы L. P касается на канал. Задержка отличается в кадре от выборки до выборки. Различный набор значений задержки для каждого канала.

Пример: [0 0 0 0; 0 0 0 0; 1 0 0 0; 5 2 0 0; 2 1 3 0; 1 6 4 4]

Пример: [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]

Пример: [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]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

infoХарактеристическая информация о допустимой области значений задержки
generatehdlСгенерируйте HDL-код для квантованного фильтра DSP (требует Filter Design HDL Coder),
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом step. Например, obj(x) становится step(obj,x).

Задержите сигнал переменным дробным количеством демонстрационных периодов.

sr = dsp.SignalSource;
vfd = dsp.VariableFractionalDelay;
sink = dsp.SignalSink;

for ii = 1:10
    delayedsig = vfd(sr(), ii/10);
    sink(delayedsig);
end

sigd = sink.Buffer;

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

stem(sr.Signal, 1:10, 'b')
hold on;
stem(sigd.', 1:10, 'r');
legend('Original signal', ...
    'Variable fractional delayed signal', ...
    'Location','best')

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Задержите входной сигнал с помощью объекта dsp.VariableFractionalDelay. Каждое значение задержки уникально и может отличаться от выборки до выборки в кадре и может отличаться через каналы. Можно вычислить несколько задержанных версий того же входного сигнала одновременно путем передачи входа задержки с соответствующей размерностью.

Полагайте, что вход случайный сигнал с одним каналом и форматом кадра 10. Примените задержку 4,8 и 8,2 выборок одновременно.

vfd = dsp.VariableFractionalDelay
vfd = 
  dsp.VariableFractionalDelay with properties:

    InterpolationMethod: 'Linear'
      InitialConditions: 0
           MaximumDelay: 100

  Show all properties

in = randn(10,1)
in = 10×1

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077
   -0.4336
    0.3426
    3.5784
    2.7694

delayVec = [4.8 8.2];
outcase1 = vfd(in,delayVec)
outcase1 = 10×2

         0         0
         0         0
         0         0
         0         0
    0.1075         0
    0.7969         0
    1.0153         0
   -1.6346         0
    0.7535    0.4301
   -0.0065    1.5746

Каждый канал в выводе задерживается 4,8 и 8,2 выборками, соответственно. Объект использует 'Линейный' метод интерполяции вычислить задержанное значение. Для получения дополнительной информации см. 'Алгоритмы' в dsp.VariableFractionalDelay object page.

Для того же вектора задержки, если вход имеет 2 канала, каждый элемент вектора задержки применяется на соответствующий канал во входе.

release(vfd);
in = randn(10,2)
in = 10×2

   -1.3499    0.6715
    3.0349   -1.2075
    0.7254    0.7172
   -0.0631    1.6302
    0.7147    0.4889
   -0.2050    1.0347
   -0.1241    0.7269
    1.4897   -0.3034
    1.4090    0.2939
    1.4172   -0.7873

outcase2 = vfd(in,delayVec)
outcase2 = 10×2

         0         0
         0         0
         0         0
         0         0
   -0.2700         0
   -0.4729         0
    2.5730         0
    0.5677         0
    0.0925    0.5372
    0.5308   -0.8317

Чтобы вычислить несколько задержанных версий двумерного входного сигнала, передайте вектор задержки как 3D массив. Третья размерность содержит касания или задержки, чтобы применяться на сигнал. Если вы передаете неодноэлементную размерность трети (1 1 P), где P представляет количество касаний, то же касание применяется через все каналы. Передайте задержки [4.8 8.2] в третьей размерности.

clear delayVec;
delayVec(1,1,1) = 4.8;
delayVec(1,1,2) = 8.2;
whos delayVec
  Name          Size             Bytes  Class     Attributes

  delayVec      1x1x2               16  double              

delayVec является 1 1 2 массивами. Передайте двумерный вход объекту dsp.VariableFractionalDelay с этим вектором задержки.

release(vfd);
outcase3 = vfd(in,delayVec)
outcase3 = 
outcase3(:,:,1) =

         0         0
         0         0
         0         0
         0         0
   -0.2700    0.1343
   -0.4729    0.2957
    2.5730   -0.8225
    0.5677    0.8998
    0.0925    1.4020
    0.5308    0.5981


outcase3(:,:,2) =

         0         0
         0         0
         0         0
         0         0
         0         0
         0         0
         0         0
         0         0
   -1.0799    0.5372
    2.1580   -0.8317

whos outcase3
  Name           Size             Bytes  Class     Attributes

  outcase3      10x2x2              320  double              

outcase3(:,:,1) представляет входной сигнал, задержанный 4,8 выборками. outcase3(:,:,2) представляет входной сигнал, задержанный 8,2 выборками. Та же задержка применяется через все каналы.

Кроме того, если вы передаете неодноэлементное второе измерение (1 L P), где L является количеством входных каналов, касания отличаются через каналы. Примените векторы задержки [2.3 3.5] и [4.4 5.6], чтобы вычислить две задержанных версии входного сигнала.

clear delayVec;
delayVec(1,1,1) = 2.3;
delayVec(1,2,1) = 3.5;
delayVec(1,1,2) = 4.4;
delayVec(1,2,2) = 5.6;
whos delayVec
  Name          Size             Bytes  Class     Attributes

  delayVec      1x2x2               32  double              
release(vfd);
outcase4 = vfd(in,delayVec)
outcase4 = 
outcase4(:,:,1) =

         0         0
         0         0
   -0.9449         0
    1.7195    0.3357
    1.4183   -0.2680
    0.1735   -0.2451
    0.4814    1.1737
    0.0709    1.0596
   -0.1484    0.7618
    1.0055    0.8808


outcase4(:,:,2) =

         0         0
         0         0
         0         0
         0         0
   -0.8099         0
    1.2810    0.2686
    1.6492   -0.0801
    0.2523   -0.4376
    0.4036    1.0824
    0.1629    1.1737

whos outcase4
  Name           Size             Bytes  Class     Attributes

  outcase4      10x2x2              320  double              

outcase4(:,:,1) содержит входной сигнал, задержанный вектором [2.3 3.5]. outcase4(:,:,2) содержит входной сигнал, задержанный вектором [4.4 5.6].

Чтобы отличаться задержка в кадре от выборки до выборки, первая размерность вектора задержки (N 1 P или N L P) должна равняться формату кадра входа (N-by-L). Передайте вектор задержки размера 10 1 2.

clear delayVec;
delayVec(:,1,1) = 3.1:0.1:4;
delayVec(:,1,2) = 0.1:0.1:1;
whos delayVec
  Name           Size             Bytes  Class     Attributes

  delayVec      10x1x2              160  double              
release(vfd);
outcase5 = vfd(in,delayVec)
outcase5 = 
outcase5(:,:,1) =

         0         0
         0         0
         0         0
   -0.8099    0.4029
    0.8425   -0.2680
    2.1111   -0.4376
    0.4889    0.9911
    0.0925    1.4020
    0.6228    0.5435
   -0.2050    1.0347


outcase5(:,:,2) =

   -1.2149    0.6043
    2.1580   -0.8317
    1.4183    0.1398
    0.2523    1.2650
    0.3258    1.0596
    0.3469    0.7072
   -0.1807    0.9424
    0.1986    0.5208
    1.4816   -0.2437
    1.4090    0.2939

Задержка отличается через каждый элемент по каналу. Тот же набор значений задержки применяется через все каналы. delayVec(:,1,1) применяется к первому задержанному сигналу, и delayVec(:,1,2) применяется к второму задержанному сигналу.

Системный объект dsp.VariableFractionalDelay поддерживает вход переменного размера, и задержите сигналы. Таким образом, можно изменить размерность входного сигнала и сигнала задержки даже после вызова алгоритма. Можно изменить размерности одной или обоих сигналы одновременно. Вместе, они должны убедиться, что количество выходных каналов (количество столбцов) остается постоянным.

Поддержка переменного размера входного сигнала

Количество выборок в каждом кадре входного сигнала может измениться. Однако количество входных каналов должно остаться постоянным.

Создайте объект dsp.VariableFractionalDelay. Передайте входной сигнал размера [256 1] и задержка 1,4 к объектному алгоритму. В последующих вызовах алгоритма измените входной формат кадра на 128, 512, и 64, соответственно

vfd = dsp.VariableFractionalDelay;
vfd(randn(256,1),1.4);
vfd(randn(128,1),1.4);
vfd(randn(512,1),1.4);
vfd(randn(64,1),1.4);

Выходной формат кадра (количество строк) изменяется согласно входному формату кадра. Количество выходных каналов в каждом из этих случаев равняется 1.

Чтобы изменить количество входных каналов, выпустите объект.

release(vfd);

Вызовите алгоритм с двухканальным входом и отличайтесь входной формат кадра по последующим вызовам.

vfd(randn(256,2),1.4);
vfd(randn(128,2),1.4);

Поддержка переменного размера задерживает сигнал

В дополнение к входу может также отличаться сигнал задержки. Таким образом, можно измениться один или обе из размерностей сигнала задержки после вызова алгоритма. Однако объект должен убедиться, что получившееся количество выходных каналов остается постоянным. Сигнал задержки может быть скаляром, вектором, матрицей или массивом N-D.

release(vfd);
vfd(randn(512,2),randn(512,2));
vfd(randn(128,2),[1.4 1.7]);
vfd(randn(256,2),randn(256,1));
vfd(randn(128,2),1.4);

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

release(vfd);
vfd(randn(256,1),randn(256,7));
vfd(randn(512,1),randn(512,7));
vfd(randn(100,1),randn(100,7));
vfd(randn(100,1),randn(1,7));

Вывод в каждом из этих случаев [256 7], [512 7], [100 7], и [100 7], соответственно.

Алгоритмы

развернуть все

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

Вопросы совместимости

развернуть все

Ошибки, запускающиеся в R2018a

Расширенные возможности

Представленный в R2012a