exponenta event banner

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 (см. Алгоритмы).

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

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

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

Ссылки

[1] Orfanidis, Sophocles J. Оптимальная обработка сигналов. Введение. 2-й эд. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1996.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |