alignsignals

Выравнивание двух сигналов путем задержки самого раннего сигнала

Описание

пример

[Xa,Ya] = alignsignals(X,Y) оценивает задержку, D, между двумя входными сигналами, X и Y, и возвращает выровненные сигналы, Xa и Ya.

  • Если Y задерживается в отношении X, тогда D положительно и X задерживается на D выборок.

  • Если Y продвигается относительно X, тогда D отрицательно и Y задерживается - D образцов.

Задержки в X или Y может быть введен путем предварительной подготовки нулей.

пример

[Xa,Ya] = alignsignals(X,Y,maxlag) использует maxlag как максимальный размер окна для нахождения предполагаемой задержки, D, между двумя входными сигналами, X и Y. Он возвращает выровненные сигналы, Xa и Ya.

пример

[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate') сохраняет длины выровненных сигналов, Xa и Ya, так же, как и входные сигналы, X и Y, соответственно.

  • Если предполагаемая задержка, D, положительная, то D нули готовятся к X и последние D выборок X усечены.

  • Если предполагаемая задержка, D, отрицательная, то - D нули готовятся к Y и последние - D выборок Y усечены.

Примечания

X и Y - строка или векторы-столбцы длины LX и LY, соответственно.

  • Если D ≥ LX, то Xa состоит из LX нулей. Все выборки X потеряны.

  • Если -  D ≥ LY, то Ya состоит из LY нулей. Все выборки Y потеряны.

Чтобы избежать назначения определенного значения maxlag при использовании 'truncate' опция, задать maxlag на [].

пример

[Xa,Ya,D] = alignsignals(___) возвращает предполагаемую задержку, D. Этот синтаксис может включать любой из входных параметров, используемых в предыдущих синтаксисах.

Примеры

свернуть все

Выравнивание Y сигнала относительно X задержкой трёх выборок.

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

X = [0 0 0 1 2 3 0 0];
Y = [1 2 3 0];

[Xa,Ya] = alignsignals(X,Y)
Xa = 1×8

     0     0     0     1     2     3     0     0

Ya = 1×7

     0     0     0     1     2     3     0

Выравнивание X сигнала когда Y задерживается в отношении X двумя выборками.

Создайте два сигнала, X и Y. Y точно так же, как X, кроме Y имеет два начальных нуля. Выровняйте два сигнала.

X = [1 2 3];
Y = [0 0 1 2 3];
maxlag = 2;

[Xa,Ya,D] = alignsignals(X,Y,maxlag)
Xa = 1×5

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 2

Выравнивание Y сигнала относительно X, несмотря на то, что Y является сигнал с шумом.

Создайте два сигнала, X и Y. Y точно так же, как X с добавлением шума. Выровняйте два сигнала.

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];

[Xa,Ya,D] = alignsignals(X,Y)
Xa = 1×6

     0     0     1     2     3     0

Ya = 1×6

    0.0200    0.1200    1.0800    2.2100    2.9500   -0.0900

D = 0

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

Активируйте 'truncate' опция при вызове alignsignals функция.

Создайте два сигнала, X и Y. Y точно так же, как X, кроме Y имеет два начальных нуля. Выровняйте два сигнала, применяя 'truncate' директива.

X = [1 2 3];
Y = [0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 2

Заметьте, что выходной сигнал Xa имеет длину 3, ту же длину, что и входной сигнал X.

В случае, когда используется 'truncate' опция завершает усечение всех исходных данных X, выдается предупреждение. Чтобы сделать alignsignals выдать такое предупреждение, запустите следующий пример.

Y = [0 0 0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
Warning: All original data in the first input X has been truncated because the length of X is smaller than the estimated delay D: to avoid truncating this data do not use the 'truncate' option.
Xa = 1×3

     0     0     0

Ya = 1×7

     0     0     0     0     1     2     3

D = 4

Выравнивание Y сигнала относительно X, несмотря на то, что Y является периодическим повторением X. Верните наименьшую возможную задержку.

Создайте два сигнала, X и Y. Y состоит из двух копий ненулевого фрагмента X разделены нулями. Выровняйте два сигнала.

X = [0 1 2 3];
Y = [1 2 3 0 0 0 0 1 2 3 0 0];

[Xa,Ya,D] = alignsignals(X,Y)
Xa = 1×4

     0     1     2     3

Ya = 1×13

     0     1     2     3     0     0     0     0     1     2     3     0     0

D = -1

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

свернуть все

Первый входной сигнал, заданный как числовой вектор длины LX.

Пример: [1 2 3]

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

Второй входной сигнал, заданный как числовой вектор длины LY.

Пример: [0 0 1 2 3]

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

Максимальный размер окна, или задержка, задается как целочисленный скаляр. По умолчанию maxlag равно max(length(X),length(Y))-1. Если maxlag вводится следующим [], оно заменяется значением по умолчанию. Если maxlag отрицательно, оно заменяется на его абсолютное значение. Если maxlag не является целочисленным или комплексным Inf, или NaN, затем alignsignals возвращает ошибку.

Пример: 2

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

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

свернуть все

Выровненный первый сигнал, возвращенный как числовой вектор, который выравнивается со вторым выходным аргументом, Ya. Если входной параметр X является вектор-строка, тогда Xa также является вектор-строка. Если входной параметр X является вектор-столбец, тогда Xa также является вектор-столбец. Если вы задаете 'truncate' опция и предполагаемая D задержки положительна, затем Xa эквивалентно входному сигналу X с D нулями, подготовленными к нему, и его последние D выборки усечены.

Выровненный второй сигнал, возвращенный как числовой вектор, который выравнивается с первым выходным аргументом, Xa. Если входной параметр Y является вектор-строка, тогда Ya также является вектор-строка. Если входной параметр Y является вектор-столбец, тогда Ya также является вектор-столбец. Если вы задаете 'truncate' опция и предполагаемая D задержки отрицательна, затем Ya эквивалентно входному сигналу Y с - D нулями, подготовленными к нему, и его последние - D выборки усечены.

Предполагаемая задержка между входными сигналами, возвращенная как скалярное целое число. Это целое число представляет количество выборок, с помощью которого эти два входных сигналов, X и Y смещены.

  • Если Y задерживается в отношении X, затем D положительный и X задерживается D выборки.

  • Если Y продвигается относительно X, затем D отрицательно и Y задерживается на - D выборки.

  • Если X и Y уже выровнены, затем D равен нулю и нет Xни Y задерживаются.

Если вы задаете значение для входного параметра maxlag, затем D должно быть меньше или равно maxlag.

Алгоритмы

  • Можно найти теорию об оценке задержки в спецификации finddelay функция (см. Алгоритмы).

  • The alignsignals функция использует оцененную D задержки, чтобы задержать самый ранний сигнал, так что эти два сигнала имеют одну и ту же начальную точку.

  • Как указано для finddelay функция, пара сигналов не должна быть точными задержанными копиями друг друга. Однако сигналы могут быть успешно выровнены, только если существует достаточная корреляция между ними. Для получения дополнительной информации об оценке ковариационных и корреляционных функций см. [1].

  • Если ваши сигналы имеют такие функции, как импульсы или переходы, можно выровнять их более эффективно, используя функции измерения вместо корреляции. Для получения примера см. раздел Выравнивание двух Двухуровневый сигнал.

Ссылки

[1] Orfanidis, Sophocles J. Optimum Signal Processing. Введение. 2nd Ed. Englewood Cliffs, NJ: Prentice Hall, 1996.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

| | | |