Задержка входа на изменяющийся во времени дробный номер периодов расчета
Примечание
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'
– Объект реализует многофазный КИХ-фильтр интерполяции, чтобы интерполировать значения.
'Farrow'
– Объект использует Лагранжев метод, чтобы интерполировать значения.
Для получения дополнительной информации об этих методах см. Алгоритмы.
FilterHalfLength
— Поясной из КИХ-фильтра интерполяции
(значение по умолчанию) | положительное целое число в области значений [1 65535]Поясной из КИХ-интерполяции фильтруют в виде положительного целого числа в области значений [1 65535].
Для периодических сигналов большее значение этого свойства, которое указывает на фильтр высшего порядка, дает к лучшей оценке задержанной выходной выборки. Значение свойства 4 - 6, который соответствует 7-му порядку к фильтру 11-го порядка, обычно соответствует.
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
FilterLength
— Длина Неоплодотворенного фильтра
(значение по умолчанию) | целое число, больше, чем или равный 2Длина КИХ-фильтра, реализованного с помощью структуры Фэрроу в виде целого числа, больше, чем или равный 2. Если длина равняется 2, фильтр выполняет линейную интерполяцию. Значение длины фильтра определяет порядок полинома, используемого для лагранжевой интерполяции.
Пример 4
Пример: 10
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'Farrow'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
InterpolationPointsPerSample
— Количество точек интерполяции на входную выборку
(значение по умолчанию) | положительное целое число в области значений [2, 65,535]Количество точек интерполяции на входную выборку, на которой уникальный КИХ-фильтр интерполяции вычисляется в виде положительного целого числа в области значений [2 65535].
Пример: 20
Пример 5
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Bandwidth
— Нормированная входная пропускная способность
(значение по умолчанию) | действительный скаляр в области значений (0 1
]Нормированная входная пропускная способность, в которой можно ограничить интерполированные выходные выборки в виде действительного скаляра в области значений (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
InitialConditions
— Начальные значения в памяти
(значение по умолчанию) | скаляр | 1 N D массивом | 1-by-N-by-(D+L) массивНачальные значения в памяти об объекте в виде скаляра или массива. Размерности этого свойства могут варьироваться в зависимости от того, хотите ли вы зафиксированные или изменяющиеся во времени начальные условия. Объект обрабатывает каждый из столбцов входа N как система координат, содержащая M последовательные выборки времени от независимого канала.
Для M-by-N входная матрица, U, можно установить InitialConditions
свойство можно следующим образом:
Чтобы задать зафиксированные начальные условия, задайте InitialConditions
как скалярное значение. Объект инициализирует каждую выборку каждого канала в памяти с помощью значения, которое вы задаете.
Размерности, которые вы задаете для изменяющихся во времени начальных условий, зависят от значения свойства InterpolationMethod.
Когда InterpolationMethod
установлен в 'Linear'
, задайте InitialConditions
как 1
- N 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
MaximumDelay
— Максимальная задержка
(значение по умолчанию) | целое число в области значений [0 65535
]Максимальная задержка, что объект может произвести для любой выборки в виде целого числа в области значений [0 65535
]. Объект отсекает входные значения задержки, больше, чем MaximumDelay
к тому максимальному значению.
Пример: 100
Пример: 10
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
FIRSmallDelayAction
— Действие, чтобы взять для маленького входа задерживает значения, когда объект использует КИХ-метод интерполяции'Clip to the minimum value necessary for centered kernel'
(значение по умолчанию) | 'Switch to linear interpolation if kernel cannot be centered'
Меры, принятые для маленького входа, задерживают значения, когда объект использует КИХ-метод интерполяции.
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'
.
FarrowSmallDelayAction
— Действие, чтобы взять для маленького входа задерживает значения, когда объект использует метод интерполяции Фэрроу'Clip to the minimum value necessary for centered kernel'
(значение по умолчанию) | 'Use off-centered kernel'
Меры, принятые для маленького входа, задерживают значения, когда объект использует неоплодотворенный метод интерполяции.
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'Farrow'
.
RoundingMethod
— Округление метода для операций фиксированной точки'Zero'
(значение по умолчанию) | 'Ceiling'
| 'Convergent'
| 'Floor'
| 'Nearest'
| 'Round'
| 'Simplest'
Режим Rounding для операций фиксированной точки в виде одного из следующего:
'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'
– Содействующий тип данных задан как пользовательский числовой тип через свойство CustomCoefficientsDataType.
Для получения дополнительной информации о содействующем типе данных этот объект использование смотрите раздел Fixed Point.
CustomCoefficientsDataType
— Содействующее слово и дробные длиныnumerictype([],32)
(значение по умолчанию)Содействующее слово и дробные длины в виде числового типа автосо знаком с размером слова 32.
Пример: numerictype ([], 16)
Это свойство применяется только, когда вы устанавливаете CoefficientsDataType на 'Custom'
.
ProductPolynomialValueDataType
— Тип данных значения полинома продукта'Same as first input'
(значение по умолчанию) | 'Custom'
Тип данных значения полинома продукта в виде одного из следующего:
'Same as first input'
– Объект задает тип данных значения полинома продукта, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип данных значения полинома продукта задан как пользовательский числовой тип через свойство CustomProductPolynomialValueDataType.
Для получения дополнительной информации о типе данных значения полинома продукта этот объект использование смотрите раздел Fixed Point.
Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'
.
CustomProductPolynomialValueDataType
— Word и дробные продолжительности значения полинома продуктаnumerictype([],32,10)
(значение по умолчанию)Word и дробные продолжительности значения полинома продукта в виде числового типа автосо знаком с размером слова 32 и дробная длина 10.
Пример: numerictype ([], 30,5)
Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow'
и ProductPolynomialValueDataType к 'Custom'
.
AccumulatorPolynomialValueDataType
— Тип данных значения полинома аккумулятора'Same as first input'
(значение по умолчанию) | 'Custom'
Тип данных значения полинома аккумулятора в виде одного из следующего:
'Same as first input'
– Объект задает тип данных значения полинома аккумулятора, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип данных значения полинома аккумулятора задан как пользовательский числовой тип через свойство CustomAccumulatorPolynomialValueDataType.
Для получения дополнительной информации о типе данных значения полинома аккумулятора, который использует этот объект, смотрите раздел Fixed Point.
Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'
.
CustomAccumulatorPolynomialValueDataType
— Word и дробные продолжительности значения полинома аккумулятораnumerictype([],32,10)
(значение по умолчанию)Word и дробные продолжительности значения полинома аккумулятора в виде числового типа автосо знаком с размером слова 32 и дробная длина 10.
Пример: numerictype ([], 30,5)
Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow'
и AccumulatorPolynomialValueDataType к 'Custom'
.
MultiplicandPolynomialValueDataType
— Тип данных значения полинома множимого'Same as first input'
(значение по умолчанию) | 'Custom'
Тип данных значения полинома множимого в виде одного из следующего:
'Same as first input'
– Объект задает тип данных значения полинома множимого, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип данных значения полинома множимого задан как пользовательский числовой тип через свойство CustomMultiplicandPolynomialValueDataType.
Для получения дополнительной информации о типе данных значения полинома множимого, который использует этот объект, смотрите раздел Fixed Point.
Это свойство применяется, когда вы устанавливаете InterpolationMethod на 'Farrow'
.
CustomMultiplicandPolynomialValueDataType
— Word и дробные продолжительности значения полинома множимогоnumerictype([],32,10)
(значение по умолчанию)Word и дробные продолжительности значения полинома множимого в виде числового типа автосо знаком с размером слова 32 и дробная длина 10.
Пример: numerictype ([], 30,5)
Это свойство применяется только, когда вы устанавливаете InterpolationMethod на 'Farrow'
и MultiplicandPolynomialValueDataType к 'Custom'
.
ProductDataType
— Тип данных продукта выводится'Same as first input'
(значение по умолчанию) | 'Custom'
Тип данных продукта вывел в этом объекте в виде одного из следующего:
'Same as first input'
– Объект задает тип выходных данных продукта, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип выходных данных продукта задан как пользовательский числовой тип через свойство CustomProductDataType.
Для получения дополнительной информации о типе выходных данных продукта смотрите Типы данных Умножения и раздел Fixed Point.
CustomProductDataType
— Word и дробные длины типа данных продуктаWord и дробные длины типа данных продукта в виде числового типа автосо знаком с размером слова 32 и дробная длина 10.
Пример: numerictype ([], 30,5)
Это свойство применяется только, когда вы устанавливаете ProductDataType на 'Custom'
.
AccumulatorDataType
— Тип данных операции накопления'Same as product'
(значение по умолчанию) | 'Same as first input'
| 'Custom'
Тип данных операции накопления в этом объекте в виде одного из следующего:
'Same as product'
– Объект задает тип данных аккумулятора, чтобы совпасть с тем из типа выходных данных продукта.
'Same as first input'
– Объект задает тип данных аккумулятора, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип данных аккумулятора задан как пользовательский числовой тип через свойство CustomAccumulatorDataType.
Для получения дополнительной информации о типе данных аккумулятора этот объект использование смотрите Фиксированную точку.
CustomAccumulatorDataType
— Word и дробные длины типа данных аккумулятораWord и дробные длины типа данных аккумулятора в виде числового типа автосо знаком с размером слова 32 и дробная длина 10.
Пример: numerictype ([], 30,5)
Это свойство применяется только, когда вы устанавливаете AccumulatorDataType на 'Custom'
.
OutputDataType
— Тип данных объектного выхода'Same as accumulator'
(значение по умолчанию) | 'Same as first input'
| 'Custom'
Тип данных объектного выхода в виде одного из следующего:
'Same as accumulator'
– Объект задает тип выходных данных, чтобы совпасть с тем из типа выходных данных аккумулятора.
'Same as first input'
– Объект задает тип выходных данных, чтобы совпасть с тем из ввода данных.
'Custom'
– Тип выходных данных задан как пользовательский числовой тип через свойство CustomOutputDataType.
Для получения дополнительной информации о выходных данных введите этот объект использование, смотрите раздел Fixed Point.
CustomOutputDataType
— Word и дробные длины типа выходных данныхWord и дробные продолжительности выходных данных вводит в виде числового типа автосо знаком с размером слова 32 и дробной длиной 10.
Пример: numerictype ([], 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 P | N-by-P | P касается на канал. Каждый столбец в выходе является задержанной версией входа. Значение задержки задано соответствующим элементом в векторе задержки входа. |
N-by-1 (один канал с форматом кадра равняются N), | N-by-P | N-by-P | P касается на канал. Кроме того, задержка варьируется в каждой системе координат от выборки до выборки. |
N-by-L (L образовывает канал с форматом кадра, равным N), | скаляр | N-by-L | Одно значение задержки применилось ко всем входным каналам |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 L | N-by-L | Уникальное значение задержки для каждого входного канала |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-1 | N-by-L | Задержитесь значение варьируется в системе координат от выборки до выборки. Тот же набор значений задержки для всех каналов. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-L | N-by-L | Задержитесь значение варьируется в системе координат от выборки до выборки. Различные значения задержки для каждого входного канала. |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 1 P | N-by-L-by-P | Каналы L. P касается на канал. Та же задержка всех каналов. |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 L P | N-by-L-by-P | Каналы L. P касается на канал. Задержка варьируется через каналы. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-1-by-P | N-by-L-by-P | Каналы L. P касается на канал. Задержка варьируется в системе координат от выборки до выборки. Тот же набор значений задержки для каждого канала. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-L-by-P | N-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
vfdOut
— Delayed выходЗадержанный выходной параметр, возвращенный как вектор или матрица. Размер, тип данных и сложность выхода совпадают с размером, типом данных и сложностью ввода данных.
Таблица показывает, как ввод данных и размерности задержки входа влияют на выходные размерности:
Ввод данных | Задержка входа | Вывод | Эффект задержки входа на вводе данных |
---|---|---|---|
N-by-1 (один канал с форматом кадра равняются N), | скаляр | N-by-1 | Одно значение задержки применилось к входному каналу |
N-by-1 (один канал с форматом кадра равняются N), | N-by-1 | N-by-1 | Задержитесь значение варьируется в системе координат от выборки до выборки |
N-by-1 (один канал с форматом кадра равняются N), | 1 P | N-by-P | P касается на канал. Каждый столбец в выходе является задержанной версией входа. Значение задержки задано соответствующим элементом в векторе задержки входа. |
N-by-1 (один канал с форматом кадра равняются N), | N-by-P | N-by-P | P касается на канал. Кроме того, задержка варьируется в каждой системе координат от выборки до выборки. |
N-by-L (L образовывает канал с форматом кадра, равным N), | скаляр | N-by-L | Одно значение задержки применилось ко всем входным каналам |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 L | N-by-L | Уникальное значение задержки для каждого входного канала |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-1 | N-by-L | Задержитесь значение варьируется в системе координат от выборки до выборки. Тот же набор значений задержки для всех каналов. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-L | N-by-L | Задержитесь значение варьируется в системе координат от выборки до выборки. Различные значения задержки для каждого входного канала. |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 1 P | N-by-L-by-P | Каналы L. P касается на канал. То же касание для всех каналов. |
N-by-L (L образовывает канал с форматом кадра, равным N), | 1 L P | N-by-L-by-P | Каналы L. P касается на канал. Касания варьируются через каналы. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-1-by-P | N-by-L-by-P | Каналы L. P касается на канал. Задержка варьируется в системе координат от выборки до выборки. Тот же набор значений задержки для каждого канала. |
N-by-L (L образовывает канал с форматом кадра, равным N), | N-by-L-by-P | N-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), |
Примечание: Если вы используете 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], соответственно.
Когда вы задаете дробное значение задержки, алгоритм использует линейное, КИХ или метод интерполяции Фэрроу интерполировать значения сигналов в демонстрационных интервалах нецелого числа.
Для задержек нецелого числа, в каждом шаге расчета, метод линейной интерполяции использует эти две выборки в памяти, самой близкой к заданной задержке, чтобы вычислить значение для выборки в то время.
Для векторного ввода данных выходной вектор, 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 представляет сохраненные выборки.
В КИХ-режиме интерполяции переменная дробная задержка хранит Dmax +P+1 новые выборки, полученные во входе для каждого канала, где P является заданным поясным фильтром интерполяции.
В этом режиме объект обеспечивает дискретный набор дробных задержек:
Если v меньше P – 1, поведение зависит от КИХ маленькая установка действия значения задержки. Можно задать поведение объекта, когда входное значение задержки слишком мало, чтобы сосредоточить ядро (меньше, чем P-1) путем установки КИХ маленькая установка действия значения задержки:
Clip to the minimum value necessary for centered kernel
– КИХ-метод интерполяции остается в использовании. Маленькие входные значения задержки отсекаются к наименьшему значению, необходимому, чтобы сосредоточить ядро.
Switch to linear interpolation if kernel cannot be centered
– Дробные задержки вычисляются с помощью линейной интерполяции, когда входное значение задержки меньше P-1.
В КИХ-режиме интерполяции алгоритм реализует многофазную структуру, чтобы вычислить значение для каждой выборки в заданной задержке. Каждая рука структуры соответствует различному значению задержки. Выход, вычисленный для каждой выборки, соответствует выходу руки со значением задержки, самым близким к заданной входной задержке. Поэтому только дискретный набор задержек на самом деле возможен. Количество коэффициентов в каждой из рук фильтра L многофазной структуры 2P. В большинстве случаев использование значений P между 4 и 6 предоставляет вам довольно точные значения интерполяции.
designMultirateFIR
функционируйте проектирует КИХ-фильтр интерполяции.
Например, когда вы устанавливаете следующие значения:
Фильтр интерполяции, поясной (P) к 4
Точки интерполяции на входную выборку к 10
Нормированная входная пропускная способность к 1
Затухание в полосе задерживания к 80 дБ
Коэффициентами фильтра дают:
b = designMultirateFIR(10,1,4,80);
При увеличении фильтра половина длины (P) увеличивает точность интерполяции, но также и увеличивает число расчетов, выполняемых на входную выборку. Объем памяти должен был сохранить содействующие увеличения фильтра также. Увеличение точек интерполяции на выборку (L) увеличивает число представимых дискретных точек задержки, но также и увеличивает требования к памяти симуляции. Вычислительная загрузка на выборку не затронута.
Нормированная входная пропускная способность от 0 до 1 позволяет вам использовать в своих интересах bandlimited содержимое частоты входа. Например, если вы знаете, что входной сигнал не имеет содержимого частоты выше Фс/4, можно задать 0.5
нормированная пропускная способность, чтобы ограничить содержимое частоты выхода к той области значений.
Примечание
Можно полагать, что каждый из фильтров интерполяции L соответствует тому выходная фаза upsample-by-L КИХ-фильтра. Поэтому нормированное входное значение улучшает полосу задерживания в критических областях и ослабляет требования полосы задерживания в областях частоты без энергии сигнала.
В Неоплодотворенном режиме интерполяции алгоритм использует Лагранжев метод, чтобы интерполировать значения.
Порядок полинома, используемого для интерполяции, основан на количестве точек данных, используемых в Лагранжевой интерполяции. Это значение задано в свойстве FilterLength.
Задавать поведение, когда входное значение задержки слишком мало, чтобы сосредоточить ядро (меньше, чем – 1), используйте Фэрроу маленькая установка действия задержки.
Clip to the minimum value necessary for centered kernel
– Алгоритм отсекает маленькие входные значения задержки к наименьшему значению, необходимому, чтобы сохранить ядро сосредоточенным. Эта опция дает к более точным значениям интерполяции.
Use off-centered kernel
– Дробные задержки вычисляются с помощью фильтра Фэрроу с ядром нев центре. Результаты для входа задерживают значения меньше, чем – 1 менее точны, чем результаты, достигнутые путем хранения ядра сосредоточенным.
Когда длина неоплодотворенного фильтра равняется 2, фильтр выполняет линейную интерполяцию.
DirectFeedthrough
СвойствоОшибки, запускающиеся в R2018a
DirectFeedthrough
свойство было удалено в R2018a. Попытка изменить это свойство вызывает ошибку. Убедитесь, что вы удаляете все ссылки на это свойство из вашего кода MATLAB. dsp.VariableFractionalDelay
объект теперь действует в прямом проходном режиме по умолчанию.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Схемы в следующих разделах показывают типы данных, используемые в dsp.VariableFractionalDelay
объект для сигналов фиксированной точки.
Несмотря на то, что можно задать большинство этих типов данных, следующие типы данных вычисляются внутренне объектом и не могут быть непосредственно заданы на интерфейсе объекта.
Тип данных | Размер слова | Дробная длина |
---|---|---|
тип данных VF | Тот же размер слова как коэффициенты | То же самое как размер слова |
Тип данных HoldInteger | Тот же размер слова как входное значение задержки | 0 биты |
Целочисленный тип данных | 32 биты | 0 биты |
Примечание
Когда вход является фиксированной точкой, все внутренние типы данных являются подписанной фиксированной точкой.
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом Линейной интерполяции переменного дробного алгоритма задержки.
Следующая схема иллюстрирует, как переменный дробный объект задержки выбирает руку многофазной структуры фильтра, которая наиболее тесно совпадает с дробным значением задержки (vf).
Следующая схема показывает типы данных с фиксированной точкой, используемые переменным дробным алгоритмом задержки в КИХ-режиме интерполяции.
Можно установить коэффициент, продукт выход, аккумулятор и типы выходных данных в объекте. Эта схема показывает, что входные данные хранятся во входном буфере с совпадающим типом данных и масштабирующийся как вход. Объектно-ориентированная память отфильтровала данные и любые начальные условия в буфере вывода с помощью типа выходных данных, и масштабируя это вы устанавливаете.
Когда по крайней мере одни из входных параметров ко множителю действительны, выход множителя находится в типе выходных данных продукта. Когда оба входных параметров ко множителю являются комплексными, результат умножения находится в типе данных аккумулятора. Для получения дополнительной информации на комплексном умножении, смотрите Типы данных Умножения.
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом интерполяции Фэрроу когда:
Неоплодотворенная длина фильтра установлена в 4
Неоплодотворенное маленькое действие задержки установлено в 'Clip to the minimum value necessary for centered kernel'
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом интерполяции Фэрроу когда:
Неоплодотворенная длина фильтра установлена в 4
Неоплодотворенное маленькое действие задержки установлено в 'Use off-centered kernel'
Diff
вычисляется из целой части значения задержки (vi) и неоплодотворенная длина фильтра (N) согласно следующему уравнению:
Следующая схема показывает типы данных с фиксированной точкой, используемые КИХ прямой фильтр формы.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.