Задержка ввода по изменяющемуся во времени дробному числу периодов выборки
Примечание
DirectFeedthrough свойство было удалено. Удалите все экземпляры этого свойства в коде MATLAB ®. Дополнительные сведения см. в разделе Вопросы совместимости.
dsp.VariableFractionalDelay Система object™ задерживает входной сигнал на заданное количество дробных выборок вдоль каждого канала входа. Объект также может одновременно вычислять несколько отложенных версий (отводов) одного и того же сигнала. Пример см. в разделе Задержка сигнала с использованием дробной задержки нескольких карт.
Объект интерполирует входной сигнал для получения новых выборок в неинтегрированных интервалах выборки. Для свойства InterpolationMethod можно задать значение 'Linear', 'FIR', или 'Farrow'. Объект поддерживает изменяющиеся во времени значения задержки. То есть значение задержки может изменяться в кадре от выборки к выборке. Можно также указать максимальное значение задержки с помощью свойства MaximumDelay. Значения задержки, превышающие максимум, обрезаются до максимума.
Для задержки ввода на изменяющееся во времени дробное число периодов выборки:
Создать dsp.VariableFractionalDelay и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает объект системы с переменной дробной задержкой, который задерживает дискретный ввод времени на изменяющееся во времени дробное число периодов выборки, как определено вторым вводом.vfd = dsp.VariableFractionalDelay
создает объект системы с переменной дробной задержкой, для каждого свойства которого задано заданное значение. Заключите каждое имя свойства в отдельные кавычки.vfd = dsp.VariableFractionalDelay(Name,Value)
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
InterpolationMethod - Метод интерполяции'Linear' (по умолчанию) | 'FIR' | 'Farrow'Метод интерполяции, указанный как один из следующих. Используя этот способ, объект интерполирует сигнал для получения новых выборок в неинтегрированных интервалах выборки.
'Linear' - Объект использует линейную интерполяцию.
'FIR' - Объект реализует многофазный фильтр интерполяции FIR для интерполяции значений.
'Farrow' - Объект использует метод LaGrange для интерполяции значений.
Дополнительные сведения об этих методах см. в разделе Алгоритмы.
FilterHalfLength - Половина длины интерполяционного фильтра FIR4 (по умолчанию) | положительное целое число в диапазоне [1 65535]Половина длины фильтра интерполяции FIR, заданная как положительное целое число в диапазоне [1 65535].
Для периодических сигналов большее значение этого свойства, которое указывает на фильтр более высокого порядка, дает лучшую оценку задержанной выходной выборки. Значение свойства от 4 до 6, которое соответствует фильтру 7-го - 11-го порядка, обычно является адекватным.
Это свойство применяется только при установке для свойства InterpolationMethod значения 'FIR'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
FilterLength - Длина фильтра Farrow4 (по умолчанию) | целое число, большее или равное 2Длина фильтра FIR, реализованного с использованием структуры Фэрроу, заданного как целое число, большее или равное 2. Если длина равна 2, фильтр выполняет линейную интерполяцию. Значение длины фильтра определяет порядок полинома, используемого для интерполяции лагранжа.
Пример: 4
Пример: 10
Это свойство применяется только при установке для свойства InterpolationMethod значения 'Farrow'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
InterpolationPointsPerSample - Количество точек интерполяции на входной образец10 (по умолчанию) | положительное целое число в диапазоне [2, 65 535]Число точек интерполяции на входную выборку, в которых вычисляется уникальный фильтр интерполяции FIR, указанное как положительное целое число в диапазоне [2 65535].
Пример: 20
Пример: 5
Это свойство применяется только при установке для свойства InterpolationMethod значения 'FIR'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Bandwidth - Нормализованная полоса пропускания на входе1 (по умолчанию) | вещественный скаляр в диапазоне (0 1]Нормализованная входная полоса пропускания для ограничения интерполированных выходных выборок, заданная как действительный скаляр в диапазоне (0 1]. Значение 1 равна частоте Найквиста, или половине частоты дискретизации, Fs. Используйте это свойство, чтобы использовать преимущество частотного содержания входного сигнала с ограниченной полосой частот. Например, если входной сигнал не имеет частотного содержания выше Fs/4, можно указать значение 0.5.
Пример: 0.5
Пример: 0.8
Это свойство применяется только при установке для свойства InterpolationMethod значения 'FIR'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
InitialConditions - Начальные значения в памяти0 (дефолт) | скаляр | множество 1 на Н на D | 1 на n (D+L) множествоНачальные значения в памяти объекта, заданные как скаляр или массив. Размеры этого свойства могут варьироваться в зависимости от того, требуется ли фиксированное или изменяющееся во времени начальное условие. Объект обрабатывает каждый из 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 собственность. Для FIR-интерполяции L является значением FilterHalfLength собственность. Для интерполяции Фэрроу L равно floor половины значения FilterLength свойство: floor(FilterLength/2).
Пример: 1
Пример: рандан (1,3,104)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
MaximumDelay - Максимальная задержка100 (по умолчанию) | целое число в диапазоне [0 65535]Максимальная задержка, которую объект может произвести для любого образца, указанного как целое число в диапазоне [0 65535]. Объект обрезает значения задержки ввода, превышающие MaximumDelay до этого максимального значения.
Пример: 100
Пример: 10
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
FIRSmallDelayAction - Действие, выполняемое для малых значений входной задержки, когда объект использует метод интерполяции FIR'Clip to the minimum value necessary for centered kernel' (по умолчанию) | 'Switch to linear interpolation if kernel cannot be centered'Действие, выполняемое для малых значений входной задержки, когда объект использует метод интерполяции FIR.
Это свойство применяется только при установке для свойства InterpolationMethod значения 'FIR'.
FarrowSmallDelayAction - Действие, выполняемое для малых значений входной задержки, когда объект использует метод интерполяции Фэрроу'Clip to the minimum value necessary for centered kernel' (по умолчанию) | 'Use off-centered kernel'Действие, выполняемое для малых значений входной задержки, когда объект использует метод интерполяции Farrow.
Это свойство применяется только при установке для свойства InterpolationMethod значения 'Farrow'.
RoundingMethod - Метод округления для операций с фиксированной точкой'Zero' (по умолчанию) | 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest'Режим округления для операций с фиксированной точкой, указанный как одно из следующих:
'Zero'
'Ceiling'
'Convergent'
'Floor'
'Nearest'
'Round'
'Simplest'
Дополнительные сведения см. в разделе Режим округления.
OverflowAction - Действие переполнения для операций с фиксированной точкой'Wrap' (по умолчанию) | 'Saturate'Действие переполнения для операций с фиксированной точкой, указанное как одно из следующих:
'Wrap' - Объект переносит результат операций с фиксированной точкой.
'Saturate' - Объект насыщает результат операций с фиксированной точкой.
Дополнительные сведения о действиях по переполнению см. в разделе Режим переполнения для операций с фиксированной точкой.
CoefficientsDataType - Тип данных коэффициентов'Same word length as input' (по умолчанию) | 'Custom'Тип данных коэффициентов в этом объекте, указанный как один из следующих:
'Same word length as input' - Объект указывает, что длина слова коэффициентов должна совпадать с длиной входного слова. Длина дроби вычисляется для получения наилучшей возможной точности.
'Custom' - Тип данных коэффициентов задается в качестве пользовательского числового типа с помощью свойства CustomExingDataType.
Дополнительные сведения о типе данных коэффициентов, используемых этим объектом, см. в разделе Фиксированная точка.
CustomCoefficientsDataType - Коэффициенты длины слов и дробейnumerictype([],32) (по умолчанию)Длина слова и дроби коэффициента, заданная как автоматически обозначенный числовой тип с длиной слова 32.
Пример: числовой тип ([], 16)
Это свойство применяется только в том случае, если для параметра IntercedDataType установлено значение 'Custom'.
ProductPolynomialValueDataType - Тип данных полиномного значения произведения'Same as first input' (по умолчанию) | 'Custom'Тип данных значения полинома произведения, указанный как одно из следующих значений:
'Same as first input' -- Объект указывает тип данных полинома произведения, который должен совпадать с типом данных ввода данных.
'Custom' -- Тип данных полиномиального значения продукта задается как пользовательский числовой тип с помощью свойства CustomProductPolynomureStartDataType.
Дополнительные сведения о типе данных полиномиального значения изделия, используемого этим объектом, см. в разделе Фиксированная точка.
Это свойство применяется при установке для InterpolationMethod значения 'Farrow'.
CustomProductPolynomialValueDataType - длины слов и дробей значения полинома произведения;numerictype([],32,10) (по умолчанию)Длина слова и дроби значения полинома произведения, заданного как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только при установке для InterpolationMethod значения 'Farrow' и тип данных ProductPolynomiveGroupDataType для 'Custom'.
AccumulatorPolynomialValueDataType - Тип данных полинома аккумулятора'Same as first input' (по умолчанию) | 'Custom'Тип данных полинома аккумулятора, указанный как одно из следующих значений:
'Same as first input' -- Объект указывает тип данных полинома накопителя, который должен совпадать с типом данных ввода данных.
'Custom' -- Тип данных многочлена сумматора задается как пользовательский числовой тип с помощью свойства CustomAccumentityPolynomureGroupDataType.
Дополнительные сведения о типе данных полинома сумматора, используемого этим объектом, см. в разделе Фиксированная точка.
Это свойство применяется при установке для InterpolationMethod значения 'Farrow'.
CustomAccumulatorPolynomialValueDataType - Длина слова и дроби полинома аккумулятораnumerictype([],32,10) (по умолчанию)Длина слова и дроби многочлена накопителя, заданного как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только при установке для InterpolationMethod значения 'Farrow' и AccompulatePolynomicalGroupDataType для 'Custom'.
MultiplicandPolynomialValueDataType - Тип данных множительного многочлена'Same as first input' (по умолчанию) | 'Custom'Тип данных множительного многочлена, указанный как одно из следующих значений:
'Same as first input' -- Объект определяет тип данных многочлена мультипликатора, который должен совпадать с типом данных ввода данных.
'Custom' -- Тип данных множительного полиномного значения задается как пользовательский числовой тип с помощью свойства CustomMultiplicandPolynomureGroupDataType.
Дополнительные сведения о типе данных мультипликативного полинома, используемого этим объектом, см. в разделе Фиксированная точка.
Это свойство применяется при установке для InterpolationMethod значения 'Farrow'.
CustomMultiplicandPolynomialValueDataType - длины слов и дробей множительного многочленаnumerictype([],32,10) (по умолчанию)Длина слова и дроби множительного многочлена, заданного как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только при установке для InterpolationMethod значения 'Farrow' и MultiplicandPolynomiveGroupDataType для 'Custom'.
ProductDataType - Тип данных вывода продукта'Same as first input' (по умолчанию) | 'Custom'Тип данных вывода продукта в этом объекте, указанный как один из следующих:
'Same as first input' -- Объект указывает тип выходных данных продукта, который должен совпадать с типом входных данных.
'Custom' -- Тип выходных данных продукта задается как пользовательский числовой тип с помощью свойства CustomProductDataType.
Дополнительные сведения о типе выходных данных продукта см. в разделах Типы данных умножения и Фиксированная точка.
CustomProductDataType - Длины слов и дробей типа данных продуктаДлины слов и дробей типа данных продукта, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только при установке для ProductDataType значения 'Custom'.
AccumulatorDataType - Тип данных операции накопления'Same as product' (по умолчанию) | 'Same as first input' | 'Custom'Тип данных операции накопления в этом объекте, указанный как один из следующих:
'Same as product' -- Объект указывает тип данных накопителя, который должен совпадать с типом выходных данных продукта.
'Same as first input' -- Объект указывает тип данных накопителя, который должен совпадать с типом входных данных.
'Custom' -- Тип данных накопителя задается как пользовательский числовой тип с помощью свойства CustomAccumerCalculateDataType.
Дополнительные сведения о типе данных накопителя, используемом этим объектом, см. в разделе Фиксированная точка.
CustomAccumulatorDataType - Длины слов и дробей типа данных аккумулятораДлины слов и дробей типа данных накопителя, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только в том случае, если для параметра AccumulateDataType установлено значение 'Custom'.
OutputDataType - Тип данных вывода объекта'Same as accumulator' (по умолчанию) | 'Same as first input' | 'Custom'Тип данных вывода объекта, указанный как один из следующих:
'Same as accumulator' -- Объект указывает тип выходных данных, который должен совпадать с типом выходных данных накопителя.
'Same as first input' -- Объект указывает тип выходных данных, который должен совпадать с типом входных данных.
'Custom' - Выходной тип данных задается как пользовательский числовой тип с помощью свойства CustomOutputDataType.
Дополнительные сведения о типе выходных данных, используемых этим объектом, см. в разделе Фиксированная точка.
CustomOutputDataType - Длины слов и дробей типа выходных данныхДлины слов и дробей выходного типа данных, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 10.
Пример: числовой тип ([], 30,5)
Это свойство применяется только при установке для OutputDataType значения 'Custom'.
задерживает ввод в объект системы переменной дробной задержки на vfdOut = vfd(input,d)d образцы. d должно быть меньше или равно значению, указанному в свойстве MaximumDelay объекта.
Значения задержки, превышающие указанную максимальную задержку, отсекаются соответствующим образом. Каждый столбец входного сигнала обрабатывается как независимый канал.
input - Ввод данныхВвод данных, заданный как вектор или матрица. Входные данные должны иметь тот же тип данных, что и входные данные задержки.
Этот объект поддерживает входной сигнал переменного размера. То есть изменить размер входного кадра (количество строк) можно даже после вызова алгоритма. Однако количество каналов должно оставаться постоянным. Пример см. в разделе Поддержка сигналов переменного размера для входных сигналов и сигналов задержки.
Пример: [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
Поддержка комплексного номера: Да
d - Ввод задержкиВвод задержки, заданный как скаляр, вектор, матрица или массив N-D. Задержка может быть целым числом или дробным значением. Когда входной сигнал задержки является дробным значением, объект интерполирует сигнал для получения новых выборок в неинтегрированных интервалах выборки. Входные данные задержки должны иметь тот же тип данных, что и входные данные.
Этот объект поддерживает сигнал задержки переменного размера. То есть можно изменить одну или обе размерности сигнала задержки после вызова алгоритма. Однако объект должен убедиться, что результирующее число выходных каналов остается постоянным. Пример см. в разделе Поддержка сигналов переменного размера для входных сигналов и сигналов задержки.
В таблице показано влияние размерности ввода задержки на ввод данных.
| Ввод данных | Ввод задержки | Продукция | Влияние задержки ввода на ввод данных |
|---|---|---|---|
| N-by-1 (один канал с размером кадра, равным N) | скаляр | N-by-1 | Одно значение задержки, применяемое к входному каналу |
| N-by-1 (один канал с размером кадра, равным N) | N-by-1 | N-by-1 | Значение задержки изменяется в пределах кадра от выборки к выборке |
| N-by-1 (один канал с размером кадра, равным N) | 1-by-P | N-по-П | P отводов на канал. Каждый столбец в выходных данных является отложенной версией входных данных. Значение задержки задается соответствующим элементом входного вектора задержки. |
| N-by-1 (один канал с размером кадра, равным N) | N-по-П | N-по-П | P отводов на канал. Кроме того, задержка варьируется в каждом кадре от выборки к выборке. |
| N-на-L (L каналов с размером кадра, равным N) | скаляр | N-по-L | Одно значение задержки, применяемое ко всем входным каналам |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-L | N-по-L | Уникальное значение задержки для каждого входного канала |
| N-на-L (L каналов с размером кадра, равным N) | N-by-1 | N-по-L | Значение задержки изменяется в пределах кадра от выборки к выборке. Одинаковый набор значений задержки для всех каналов. |
| N-на-L (L каналов с размером кадра, равным N) | N-по-L | N-по-L | Значение задержки изменяется в пределах кадра от выборки к выборке. Различные значения задержки для каждого входного канала. |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-1-by-P | N-по-L-по-П | L каналов. P отводов на канал. Одинаковая задержка для всех каналов. |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-L-by-P | N-по-L-по-П | L каналов. P отводов на канал. Задержка изменяется в разных каналах. |
| N-на-L (L каналов с размером кадра, равным N) | N-by-1-by-P | N-по-L-по-П | L каналов. P отводов на канал. Задержка варьируется в пределах кадра от образца к образцу. Одинаковый набор значений задержки для каждого канала. |
| N-на-L (L каналов с размером кадра, равным N) | N-по-L-по-П | N-по-L-по-П | L каналов. P отводов на канал. Задержка варьируется в пределах кадра от образца к образцу. Различный набор значений задержки для каждого канала. |
Пример: [2 3 4 5]
Пример: [2.5]
Пример: [5.6]
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
vfdOut - Задержанный выходЗадержанный выход, возвращаемый в виде вектора или матрицы. Размер, тип данных и сложность вывода соответствуют размеру, типу данных и сложности ввода данных.
В таблице показано, как входные и задержанные входные измерения влияют на выходные измерения:
| Ввод данных | Ввод задержки | Продукция | Влияние задержки ввода на ввод данных |
|---|---|---|---|
| N-by-1 (один канал с размером кадра, равным N) | скаляр | N-by-1 | Одно значение задержки, применяемое к входному каналу |
| N-by-1 (один канал с размером кадра, равным N) | N-by-1 | N-by-1 | Значение задержки изменяется в пределах кадра от выборки к выборке |
| N-by-1 (один канал с размером кадра, равным N) | 1-by-P | N-по-П | P отводов на канал. Каждый столбец в выходных данных является отложенной версией входных данных. Значение задержки задается соответствующим элементом входного вектора задержки. |
| N-by-1 (один канал с размером кадра, равным N) | N-по-П | N-по-П | P отводов на канал. Кроме того, задержка варьируется в каждом кадре от выборки к выборке. |
| N-на-L (L каналов с размером кадра, равным N) | скаляр | N-по-L | Одно значение задержки, применяемое ко всем входным каналам |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-L | N-по-L | Уникальное значение задержки для каждого входного канала |
| N-на-L (L каналов с размером кадра, равным N) | N-by-1 | N-по-L | Значение задержки изменяется в пределах кадра от выборки к выборке. Одинаковый набор значений задержки для всех каналов. |
| N-на-L (L каналов с размером кадра, равным N) | N-по-L | N-по-L | Значение задержки изменяется в пределах кадра от выборки к выборке. Различные значения задержки для каждого входного канала. |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-1-by-P | N-по-L-по-П | L каналов. P отводов на канал. Одинаковое касание для всех каналов. |
| N-на-L (L каналов с размером кадра, равным N) | 1-by-L-by-P | N-по-L-по-П | L каналов. P отводов на канал. Отводы различаются по каналам. |
| N-на-L (L каналов с размером кадра, равным N) | N-by-1-by-P | N-по-L-по-П | L каналов. P отводов на канал. Задержка варьируется в пределах кадра от образца к образцу. Одинаковый набор значений задержки для каждого канала. |
| N-на-L (L каналов с размером кадра, равным N) | N-по-L-по-П | N-по-L-по-П | 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
Поддержка комплексного номера: Да
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
info | Характеристическая информация о допустимом диапазоне задержки |
generatehdl | Создание кода HDL для квантованного фильтра DSP (требуется кодер HDL конструкции фильтра) |
Задержка сигнала на изменяющееся дробное число периодов выборки.
Примечание.При использовании 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 отсчетов соответственно. Объект использует метод интерполяции «Linear» для вычисления задержанного значения. Дополнительные сведения см. в разделе «Алгоритмы» в 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
Для вычисления нескольких отложенных версий двухмерного входного сигнала передайте вектор задержки в виде трехмерного массива. Третье измерение содержит отводы или задержки, применяемые к сигналу. Если Вы передаете измерение трети неединичного предмета (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 outcase3Name 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 outcase4Name Size Bytes Class Attributes outcase4 10x2x2 320 double
outcase4(:,:,1) содержит входной сигнал, задержанный вектором [2.3 3.5]. outcase4(:,:,2) содержит входной сигнал, задержанный вектором [4.4 5.6].
Для изменения задержки в кадре от выборки к выборке первый размер вектора задержки (N-by-1-by-P или N-на-L-на-P) должен быть равен размеру кадра на входе (N-на-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] соответственно.
При задании значения дробной задержки алгоритм использует метод линейной интерполяции, FIR или Farrow для интерполяции значений сигнала в неинтегрированных интервалах выборки.
Для неинтегрированных задержек в каждый момент времени выборки метод линейной интерполяции использует две выборки в памяти, ближайшей к указанной задержке, для вычисления значения для выборки в это время.
Для ввода векторных данных выходной вектор y вычисляется с использованием следующего соотношения:
vi = floor(v) vf = v-vi y(i) = U(i-vi-1)*vf + U(i-vi)*(1-vf)
где,
i -- Индекс текущей выборки
v -- Дробная задержка
vi -- Целочисленная часть задержки
vf -- Дробная часть задержки
U -- вектор входных данных
y -- Вектор выходных данных
U (i-vi), U (i-vi-1) - две выборки в памяти, ближайшие к указанной задержке
i-vi - Расстояние в выборках между текущим индексом и ближайшей точкой линии интерполяции.
Переменная дробная задержка сохраняет самые последние выборки Dmax + 1, принятые на входе для каждого канала, где Dmax - максимальная указанная задержка. U представляет сохраненные выборки.
В режиме FIR-интерполяции переменная дробная задержка сохраняет самые последние выборки Dmax + P + 1, принятые на входе для каждого канала, где P - заданная половинная длина интерполяционного фильтра.
В этом режиме объект обеспечивает дискретный набор дробных задержек:
Если v меньше P-1, поведение зависит от настройки действия с малой задержкой КИХ. Можно указать поведение объекта, когда входное значение задержки слишком мало для центрирования ядра (меньше P-1), задав параметр действия с малым значением задержки FIR:
Clip to the minimum value necessary for centered kernel - Метод интерполяции FIR остается в использовании. Малые значения входной задержки обрезаются до наименьшего значения, необходимого для центрирования ядра.
Switch to linear interpolation if kernel cannot be centered - Дробные задержки вычисляются с использованием линейной интерполяции, когда входное значение задержки меньше P-1.
В режиме FIR-интерполяции алгоритм реализует многофазную структуру для вычисления значения для каждой выборки с заданной задержкой. Каждое плечо структуры соответствует различным значениям задержки. Выходной сигнал, вычисленный для каждой выборки, соответствует выходному сигналу рычага со значением задержки, ближайшим к заданной входной задержке. Поэтому фактически возможен только дискретный набор задержек. Количество коэффициентов в каждом из L рукавов фильтра многофазной структуры равно 2P. В большинстве случаев использование значений P между 4 и 6 обеспечивает достаточно точные значения интерполяции.
designMultirateFIR функция создает фильтр интерполяции FIR.
Например, при установке следующих значений:
Интерполяционный фильтр половинной длины (P) - 4
Точки интерполяции по входному образцу до 10
Нормализованная входная полоса пропускания до 1
Затухание полосы останова до 80 дБ
Коэффициенты фильтра задаются:
b = designMultirateFIR(10,1,4,80);
Увеличение половинной длины фильтра (Р) повышает точность интерполяции, но также увеличивает число вычислений, выполняемых на входную выборку. Объем памяти, необходимый для хранения коэффициентов фильтра, также увеличивается. Увеличение точек интерполяции на выборку (L) увеличивает количество представимых точек дискретной задержки, но также увеличивает требования к памяти моделирования. Вычислительная нагрузка на образец не влияет.
Нормализованная полоса пропускания входа от 0 до 1 позволяет использовать преимущество ограниченного по полосе частотного содержания входа. Например, если известно, что входной сигнал не имеет частотного содержания выше Fs/4, можно указать 0.5 нормализованная полоса пропускания для ограничения частотного содержания выходного сигнала этим диапазоном.
Примечание
Можно считать, что каждый из L-интерполяционных фильтров соответствует одной выходной фазе фильтра ПИХ с нарастающей выборкой. Следовательно, нормализованное входное значение улучшает полосу останова в критических областях и уменьшает требования к полосе останова в частотных областях без энергии сигнала.
В режиме интерполяции Фэрроу алгоритм использует метод LaGrange для интерполяции значений.
Порядок полинома, используемого для интерполяции, основан на количестве точек данных, используемых в интерполяции Лагранжа. Это значение указано в свойстве FilterLength.
Чтобы задать поведение, когда входное значение задержки слишком мало для центрирования ядра (менее - 1), используйте параметр действия малой задержки Farrow.
Clip to the minimum value necessary for centered kernel - Алгоритм обрезает малые значения входной задержки до наименьшего значения, необходимого для сохранения центра ядра. Эта опция позволяет получить более точные значения интерполяции.
Use off-centered kernel - Дробные задержки вычисляются с помощью фильтра Фэрроу с нецентрированным ядром. Результаты для входных значений задержки, меньших -1, менее точны, чем результаты, полученные при сохранении центрирования ядра.
Когда длина фильтра Farrow равна 2, фильтр выполняет линейную интерполяцию.
DirectFeedthrough СобственностьОшибки, начинающиеся с R2018a
DirectFeedthrough свойство было удалено в R2018a. Попытка изменить это свойство приводит к ошибке. Убедитесь, что все ссылки на это свойство удалены из кода MATLAB. dsp.VariableFractionalDelay теперь объект по умолчанию работает в режиме прямой сквозной передачи.
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Диаграммы в следующих разделах показывают типы данных, используемые в dsp.VariableFractionalDelay объект для сигналов фиксированной точки.
Хотя можно указать большинство из этих типов данных, следующие типы данных вычисляются внутри объекта и не могут быть указаны непосредственно в интерфейсе объекта.
| Тип данных | Длина слова | Длина фракции |
|---|---|---|
| Тип данных vf | Та же длина слова, что и коэффициенты | Совпадает с длиной слова |
| Тип данных HoldInteger | Та же длина слова, что и входное значение задержки | 0 биты |
| Тип целочисленных данных | 32 биты | 0 биты |
Примечание
Когда вход является фиксированной точкой, все внутренние типы данных подписываются фиксированной точкой.
На следующей диаграмме показаны типы данных с фиксированной точкой, используемые в режиме линейной интерполяции алгоритма переменной дробной задержки.

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

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

В объекте можно задать коэффициенты, выходные данные продукта, накопители и типы выходных данных. Эта диаграмма показывает, что входные данные хранятся во входном буфере с тем же типом данных и масштабированием, что и входные данные. Объект сохраняет отфильтрованные данные и все начальные условия в выходном буфере, используя заданные тип выходных данных и масштаб.
Когда, по меньшей мере, один из входных сигналов множителя является реальным, выходной сигнал множителя находится в виде выходных данных произведения. Когда оба входа множителя сложны, результат умножения находится в накопительном типе данных. Дополнительные сведения о комплексном умножении см. в разделе Типы данных умножения.
На следующей диаграмме показаны типы данных с фиксированной точкой, используемые режимом интерполяции Фэрроу, когда:
Для длины фильтра Farrow установлено значение 4
Действие малой задержки Farrow имеет значение 'Clip to the minimum value necessary for centered kernel'

На следующей диаграмме показаны типы данных с фиксированной точкой, используемые режимом интерполяции Фэрроу, когда:
Для длины фильтра Farrow установлено значение 4
Действие малой задержки Farrow имеет значение 'Use off-centered kernel'

Diff вычисляется из целой части значения задержки (vi) и длины фильтра Farrow (N) согласно следующему уравнению:
Diff≥0⇒Diff=0Diff<0⇒Diff=−Diff
На следующей диаграмме показаны типы данных с фиксированной точкой, используемые фильтром прямой формы FIR.

Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.