alignsignals

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

Синтаксис

[Xa,Ya] = alignsignals(X,Y)
[Xa,Ya] = alignsignals(X,Y,maxlag)
[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')
[Xa,Ya,D] = 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, Софокл Дж. Оптимальная обработка сигналов. Введение. 2-й Эд. Englewood Cliffs, NJ: Prentice Hall, 1996.

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

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

Смотрите также

| | | |