Задержка вводится изменяющимся во времени дробным количеством демонстрационных периодов
Свойство DirectFeedthrough
было удалено. Удалите все экземпляры этого свойства в вашем коде MATLAB®. Для получения дополнительной информации см. Вопросы совместимости.
Система dsp.VariableFractionalDelay
object™ задерживает входной сигнал конкретным количеством дробных выборок вдоль каждого канала входа. Объект может также одновременно вычислить несколько задержанных версий (касания) того же сигнала. Для примера смотрите, что Задержка Сигнала Использует Мультикасание Дробная Задержка.
Объект интерполирует входной сигнал, чтобы получить новые выборки в интервалах выборки нецелого числа. Можно установить свойство InterpolationMethod на 'Linear'
, 'FIR'
или 'Farrow'
. Поддержка объектов изменяющиеся во времени значения задержки. Таким образом, значение задержки может меняться в кадре от выборки до выборки. Можно также задать максимальное значение задержки при помощи свойства MaximumDelay. Задержите значения, больше, чем максимум отсекается к максимуму.
Задержать вход изменяющимся во времени дробным количеством демонстрационных периодов:
Создайте объект dsp.VariableFractionalDelay
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
vfd = dsp.VariableFractionalDelay
vfd = dsp.VariableFractionalDelay(Name,Value)
создает переменный дробный Системный объект задержки, который задерживает дискретное время, введенное изменяющимся во времени дробным количеством демонстрационных периодов, как задано вторым входом.vfd
= dsp.VariableFractionalDelay
создает переменный дробный Системный объект задержки с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.vfd
= dsp.VariableFractionalDelay(Name,Value
)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
Метод интерполяции
Метод интерполяции'Linear'
(значение по умолчанию) | 'FIR'
| 'Farrow'
Метод интерполяции, заданной как одно из следующих. Используя этот метод, объект интерполирует сигнал получить новые выборки в интервалах выборки нецелого числа.
'Linear'
– Объект использует линейную интерполяцию.
'FIR'
– Объект реализует многофазный КИХ-фильтр интерполяции, чтобы интерполировать значения.
'Farrow'
– Объект использует Лагранжев метод, чтобы интерполировать значения.
Для получения дополнительной информации на этих методах, см. Алгоритмы.
FilterHalfLength
— Поясной из КИХ-фильтра интерполяции4
(значение по умолчанию) | положительное целое число в области значений [1 65535]Поясной из КИХ-фильтра интерполяции, заданного как положительное целое число в области значений [1 65535].
Для периодических сигналов большее значение этого свойства, которое указывает на фильтр высшего порядка, приводит к лучшей оценке задержанной выходной выборки. Значение свойства 4 - 6, который соответствует 7-му порядку к фильтру 11-го порядка, обычно соответствует.
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
FilterLength
— Длина Неоплодотворенного фильтра4
(значение по умолчанию) | целое число, больше, чем или равный 2Длина КИХ-фильтра, реализованного с помощью структуры Фэрроу, заданной как целое число, больше, чем или равный 2. Если длина равняется 2, фильтр выполняет линейную интерполяцию. Значение длины фильтра определяет порядок полинома, используемого для лагранжевой интерполяции.
Пример 4
Пример: 10
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'Farrow'
.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
InterpolationPointsPerSample
— Количество точек интерполяции на входную выборку10
(значение по умолчанию) | положительное целое число в области значений [2, 65,535]Количество точек интерполяции на входную выборку, на которой вычисляется уникальный КИХ-фильтр интерполяции, задало как положительное целое число в области значений [2 65535].
Пример: 20
Пример 5
Это свойство применяется только, когда вы устанавливаете свойство InterpolationMethod на 'FIR'
.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Bandwidth
— Normalized1
(значение по умолчанию) | действительный скаляр в области значений (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
— Начальные значения в памяти0
(значение по умолчанию) | скаляр | 1 N D массивом | 1-by-N-by-(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
. Для КИХ-интерполяции L является значением свойства FilterHalfLength
. Для Неоплодотворенной интерполяции L равняется floor
половины значения свойства FilterLength
: floor(FilterLength/2)
.
Пример 1
Пример: randn (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
— Действие, чтобы взять для маленького входа задерживает значения, когда объект использует КИХ-метод интерполяции'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'
.
Для версий ранее, чем 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
Поддержка комплексного числа: Да
d
— DelayВход задержки, заданный как скаляр, вектор, матрица или 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, фильтр выполняет линейную интерполяцию.
Ошибки, запускающиеся в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.