Задержка входа изменяющимся во времени дробным количеством периодов дискретизации
Примечание
The DirectFeedthrough
свойство удалено. Удалите все образцы этого свойства в MATLAB® код. Для получения дополнительной информации см. Вопросы совместимости.
The 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'
- Объект использует метод LaGrange для интерполяции значений.
Для получения дополнительной информации об этих методах см. «Алгоритмы».
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Длина конечной импульсной характеристики, реализованная с использованием структуры Farrow, заданная как целое число, больше или равное 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
- Нормированная входная полоса пропускания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-by-<reservedrangesplaceholder3> D выстраиваетНачальные значения в памяти объекта, заданные как скаляр или массив. Размерности этого свойства могут варьироваться в зависимости от того, хотите ли вы фиксированных или изменяющихся во времени начальных условий. Объект обрабатывает каждый из 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
свойство. Для интерполяции Farrow 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
- Действие для малых входов задержки, когда объект использует метод интерполяции Farrow'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'
- Тип данных коэффициентов задается как пользовательский числовой тип через свойство CustomCofficientsDataType.
Для получения дополнительной информации о типе данных коэффициентов, используемых этим объектом, смотрите раздел Фиксированная точка.
CustomCoefficientsDataType
- Слова коэффициентов и длины дробейnumerictype([],32)
(по умолчанию)Слова коэффициентов и длины дробей, заданные как автоматический числовой тип с размером слова 32.
Пример: численный тип ([], 16)
Это свойство применяется только, когда вы устанавливаете CofficientsDataType на 'Custom'
.
ProductPolynomialValueDataType
- Тип данных полинома продукта'Same as first input'
(по умолчанию) | 'Custom'
Тип данных продуктов полинома значения, заданный как один из следующих:
'Same as first input'
-- Объект задает тот продукт полином значения тип данных, который будет таким же, как у входа данных.
'Custom'
- Тип данных полинома продукта значения задается как пользовательский числовой тип через свойство CustomProductPolynomialValueDataType.
Для получения дополнительной информации о продукте полиномиальном типе данных значений, используемом этим объектом, смотрите раздел Fixed Точки.
Это свойство применяется, когда для InterpolationMethod задано значение 'Farrow'
.
CustomProductPolynomialValueDataType
- Слово и длины дроби полинома продуктаnumerictype([],32,10)
(по умолчанию)Длина слова и дроби продукта полинома значения, заданная как автоматический числовой тип с размером слова 32 и длиной дроби 10.
Пример: численный тип ([], 30,5)
Это свойство применяется только, когда для InterpolationMethod задано значение 'Farrow'
и ProductPolynomialValueDataType, для 'Custom'
.
AccumulatorPolynomialValueDataType
- Тип данных полинома аккумулятора'Same as first input'
(по умолчанию) | 'Custom'
Тип данных значения полинома аккумулятора, определенного как одно из следующего:
'Same as first input'
-- Объект задает тип полинома значения данных аккумулятора таким же, как и тип данных входов.
'Custom'
- Тип полинома значения данных аккумулятора задается как пользовательский числовой тип через свойство CustomAccumulatorPolynomialValueDataType.
Для получения дополнительной информации о типе полинома значения данных аккумулятора, который использует этот объект, см. Раздел Фиксированная Точка.
Это свойство применяется, когда для InterpolationMethod задано значение 'Farrow'
.
CustomAccumulatorPolynomialValueDataType
- Слово и длины дробей полинома аккумулятораnumerictype([],32,10)
(по умолчанию)Длина слова и дроби полинома аккумулятора значения, заданная как автоматический числовой тип с размером слова 32 и длиной дроби 10.
Пример: численный тип ([], 30,5)
Это свойство применяется только, когда для InterpolationMethod задано значение 'Farrow'
и AccumulatorPolynomialValueDataType в 'Custom'
.
MultiplicandPolynomialValueDataType
- Тип данных мультипликационного и полиномиального значения'Same as first input'
(по умолчанию) | 'Custom'
Тип данных мультипликационного и полиномиального значения, заданный как одно из следующего:
'Same as first input'
- Объект задает тот же тип данных полинома значения полинома, что и тип данных входов данных.
'Custom'
- Мультипликационный и полиномиальный тип значения данных задается как пользовательский числовой тип через свойство CustomMultiplicandPolynomialValueDataType.
Для получения дополнительной информации о типе полинома значения данных, который используется этим объектом, смотрите раздел Fixed Точки.
Это свойство применяется, когда для InterpolationMethod задано значение 'Farrow'
.
CustomMultiplicandPolynomialValueDataType
- Длина слова и дроби полиномаnumerictype([],32,10)
(по умолчанию)Длина слова и дроби полинома значения, заданная как автоматический числовой тип с размером слова 32 и длиной дроби 10.
Пример: численный тип ([], 30,5)
Это свойство применяется только, когда для InterpolationMethod задано значение 'Farrow'
и MultiplicandPolynomialValueDataType в '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'
- Тип данных аккумулятора задается как пользовательский числовой тип через свойство CustomAccumulatorDataType.
Для получения дополнительной информации о типе данных аккумулятора, используемом этим объектом, смотрите Фиксированную Точку.
CustomAccumulatorDataType
- Длина слова и дроби типа данных аккумулятораДлина слова и дроби типа данных аккумулятора, заданная как автоматический числовой тип с размером слова 32 и длиной дроби 10.
Пример: численный тип ([], 30,5)
Это свойство применяется только, когда вы задаете значение AccumulatorDataType '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 -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-by- 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-by- L -by- 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
- Задержка выходаЗадержанный выход, возвращенный как вектор или матрица. Размер, тип данных и сложность выхода совпадают с размером, типом данных и сложностью входных данных.
Таблица показов, как вход данных и задержки входа измерения влияют на выход измерения:
Вход данных | Задержка входа | Выход | Эффект задержки входа на входе данных |
---|---|---|---|
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 -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-by- 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-by- L -by- 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 выборки, соответственно. Объект использует метод интерполяции '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 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-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], соответственно.
Когда вы задаете значение дробной задержки, алгоритм использует линейный, конечная импульсная характеристика, или интерполяцию Фэрроу, чтобы интерполировать значения сигналов с нецелочисленными интервалами выборки.
Для нецелочисленных задержек в каждом шаге расчета метод линейной интерполяции использует две выборки в памяти, ближайшей к указанной задержке, чтобы вычислить значение для выборки в то время.
Для входных данных вектора выходной вектор, 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 ветвей фильтра структуры полифазы 2 P. В большинстве случаев использование значений P между 4 и 6 предоставляет вам достаточно точные значения интерполяции.
designMultirateFIR
функция проектирует конечную импульсную характеристику фильтр интерполяции.
Для примера, когда вы устанавливаете следующие значения:
Интерполяционный фильтр с половинной длиной (P) до 4
Точки интерполяции на входную выборку до 10
Нормированная входная полоса для 1
Затухание в полосе задерживания до 80 дБ
Коэффициенты фильтра заданы:
b = designMultirateFIR(10,1,4,80);
Увеличение длины половины фильтра (P) увеличивает точность интерполяции, но также увеличивает количество расчетов, выполняемых на входную выборку. Объем памяти, необходимой для хранения коэффициентов фильтра, также увеличивается. Увеличение точек интерполяции на выборку (L) увеличивает количество представимых дискретных точек задержки, но также увеличивает требования симуляции к памяти. Вычислительная нагрузка на выборку не влияет.
Нормированная входная полоса от 0 до 1 позволяет вам использовать в своих интересах ограниченное по частоте содержимое входа. Для примера, если вы знаете, что входной сигнал не имеет частоты, содержимого выше Fs/4, можно задать 0.5
нормированная шумовая полоса для ограничения частотного содержимого выхода этой областью значений.
Примечание
Можно считать, что каждый из L фильтров интерполяции соответствует одной выходной фазе КИХ-фильтра upsample-by L. Поэтому нормированное входное значение улучшает диапазон остановок в критических областях и ослабляет требования к диапазону остановок в частотных областях без энергии сигнала.
В режиме интерполяции Farrow алгоритм использует метод LaGrange для интерполяции значений.
Порядок полинома, используемого для интерполяции, основан на количестве точек данных, используемых в интерполяции Лагранжа. Это значение задано в свойстве FilterLength.
Чтобы задать поведение, когда входное значение задержки слишком мало, чтобы центрировать ядро (меньше - 1), используйте настройку действия Farrow small delay.
Clip to the minimum value necessary for centered kernel
- Алгоритм клипирует маленькие входные значения задержки до наименьшего значения, необходимого для сохранения центра ядра. Эта опция приводит к более точным значениям интерполяции.
Use off-centered kernel
- Дробные задержки вычисляются с помощью фильтра Фэрроу с нецентрированным ядром. Результаты для входных значений задержки меньше - 1 менее точны, чем результаты, достигнутые путем сохранения ядра центрированным.
Когда длина фильтра farrow равна 2, фильтр выполняет линейную интерполяцию.
DirectFeedthrough
СвойствоОшибки, начинающиеся в R2018a
The DirectFeedthrough
свойство удалено в R2018a. Попытка изменить это свойство приводит к ошибке. Убедитесь, что вы удалили все ссылки на это свойство из кода MATLAB. The dsp.VariableFractionalDelay
теперь объект по умолчанию работает в режиме прямой передачи.
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
На схемах в следующих разделах показаны типы данных, используемые в dsp.VariableFractionalDelay
объект для сигналов с фиксированной точкой.
Хотя можно задать большинство из этих типов данных, следующие типы данных вычисляются внутри объекта и не могут быть непосредственно заданы в интерфейсе объекта.
Тип данных | Размер слова | Длина дроби |
---|---|---|
Тип данных vf | Размер слова коэффициентов | То же, что и размер слова |
Тип данных HoldInteger | Тот же размер слова, что и входное значение задержки | 0 биты |
Целочисленный тип данных | 32 биты | 0 биты |
Примечание
Когда вход является фиксированной точкой, все внутренние типы данных подписаны фиксированной точкой.
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом линейной интерполяции алгоритма дробной задержки переменной.
Следующая схема иллюстрирует, как объект переменной дробной задержки выбирает плечо структуры полифазного фильтра, которое наиболее близко соответствует значению дробной задержки (vf).
Следующая схема показывает типы данных с фиксированной точкой, используемые алгоритмом дробной задержки переменной в режиме интерполяции конечной импульсной характеристики.
Можно задать коэффициент, выход продукта, аккумулятор и типы выходных данных в объекте. Эта схема показывает, что входные данные хранятся во входном буфере с совпадающим типом данных и масштабированием, что и вход. Объект хранит отфильтрованные данные и любые начальные условия в буфере выхода с помощью заданных типа данных выходов и масштабирования.
Когда, по меньшей мере, один из входов в умножитель является вещественным, выход умножителя находится в типе выходных данных продукта. Когда оба входа в умножитель являются комплексными, результат умножения находится в типе данных аккумулятора. Для получения дополнительной информации о комплексном умножении смотрите Типы данных умножения.
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом интерполяции Farrow, когда:
Длина фильтра Farrow установлена в 4
Действие малой задержки Farrow установлено в 'Clip to the minimum value necessary for centered kernel'
Следующая схема показывает типы данных с фиксированной точкой, используемые режимом интерполяции Farrow, когда:
Длина фильтра Farrow установлена в 4
Действие малой задержки Farrow установлено в 'Use off-centered kernel'
Diff
вычисляется из целочисленной части значения задержки (vi) и длины фильтра наименьшей длины (N) согласно следующему уравнению:
Следующая схема показывает типы данных с фиксированной точкой, используемые конечной импульсной характеристикой фильтром прямых форм.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.