exponenta event banner

finddelay

Оценка задержки (задержек) между сигналами

Описание

пример

d = finddelay(x,y) возвращает оценку задержки d между входными сигналами x и y. Задержки в x и y может быть введено путем добавления нулей.

пример

d = finddelay(x,y,maxlag) использование maxlag чтобы найти предполагаемую задержку (и) междуx и y.

Примеры

свернуть все

Ниже показаны Y задерживается в отношении X двумя образцами.

X = [1 2 3];
Y = [0 0 1 2 3];
D = finddelay(X,Y)
D = 2

Вот случай Y продвинуто в отношении X на три образца.

X = [0 0 0 1 2 3 0 0]';
Y = [1 2 3 0]';
D = finddelay(X,Y)
D = -3

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

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];
D = finddelay(X,Y)
D = 0

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

X = [0 1 2 3];
Y = [1 2 3 0 0 0 0 1 2 3 0 0];
D = finddelay(X,Y)
D = -1

maxlag указывается как скаляр (те же максимальные размеры окна).

X = [0 1 2];
Y = [0 1 0 0;
     1 2 0 0;
     2 0 1 0;
     0 0 2 1];
maxlag = 3;
D = finddelay(X,Y,maxlag)
D = 1×4

     0    -1     1     1

Определить X и Y одинакового размера. finddelay работает по столбцам.

X = [0 1 0 0;
     1 2 0 0;
     2 0 1 0;
     1 0 2 1;
     0 0 0 2];
Y = [0 0 1 0;
     1 1 2 0;
     2 2 0 1;
     1 0 0 2;
     0 0 0 0];
D = finddelay(X,Y)
D = 1×4

     0     1    -2    -1

Повторите вычисления, но теперь добавьте дополнительную строку нулей в качестве второй строки Y.

Y = [0 0 1 0;
     0 0 0 0;
     1 1 2 0;
     2 2 0 1;
     1 0 0 2;
     0 0 0 0];
D = finddelay(X,Y)
D = 1×4

     1     2    -1     0

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

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

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

Вычислите задержки по столбцам. Установите максимальный размер окна корреляции 8 для каждого канала.

maxlag = [8 8];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -5

Уменьшите размер окна корреляции до 3 для первого канала и 5 для второго.

maxlag = [3 5];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -5

Увеличьте размер корреляционного окна до 5 для первого канала и уменьшите его до 3 для второго.

maxlag = [5 3];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -3

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

свернуть все

Опорный вход, заданный как вектор или матрица.

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

Максимальный размер окна корреляции, заданный как целочисленный скаляр или вектор. Если какой-либо элемент maxlag отрицательный, он заменяется на его абсолютное значение. Если какой-либо элемент maxlag не является целым числом или является сложным, Inf, или NaN, то finddelay возвращает ошибку.

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

свернуть все

Задержка между входными сигналами, возвращаемая как целочисленный скаляр или вектор. Если y задерживается в отношении x, то d является положительным. Если y продвинут по отношению к x, то d отрицательный. Если возможны несколько задержек, как в случае периодических сигналов, возвращается задержка с наименьшим абсолютным значением. В случае, когда возможна как положительная, так и отрицательная задержка с одинаковым абсолютным значением, возвращается положительная задержка.

Если x является матрицей размера MX-by-NX (MX > 1 и NX > 1) и y является матрицей размера MY-by-NY (MY > 1 и NY > 1 и NY > 1), возвращает вектор строки d предполагаемых задержек между каждым столбцом x и соответствующий столбец y. При таком использовании количество столбцов x должно быть равно количеству столбцов y (т.е. NX = NY).

Совет

  • x и y не обязательно должны быть точными отложенными копиями друг друга, так как finddelay(x,y) возвращает оценку задержки посредством взаимной корреляции. Однако эта оцененная задержка имеет полезное значение, только если существует достаточная корреляция между отложенными версиями x и y.

  • расчет вектора предполагаемых задержек, d, зависит от x, y, и maxlag как показано в следующей таблице.

    maxlagXYD рассчитывается по...
    Скаляр с целочисленным значениемВектор или матрица строки или столбцаВектор или матрица строки или столбцаПерекрестная корреляция столбцов X и Y в диапазоне лагов -maxlag:maxlag.
    Целочисленный вектор строки или столбцаВектор строки или столбца длиной LX ≥ 1Матрица размера MY-by-NY (MY > 1, NY > 1)Кросс-корреляция X и столбец j из Y в диапазоне лагов -maxlag(j):maxlag(j), для j = 1:NY.
    Целочисленный вектор строки или столбцаМатрица размера MX-by-NX (MX > 1, NX > 1)Вектор строки или столбца длиной LY ≥ 1Кросс-коррелирующий столбец j из X и Y в диапазоне лагов -maxlag(j):maxlag(j), для j = 1:NX.
    Целочисленный вектор строки или столбцаМатрица размера MX-by-NX (MX > 1, NX > 1)Матрица размера MY-by-NY (MY > 1, NY = NX > 1)Кросс-коррелирующий столбец j из X и столбец j из Y в диапазоне лагов -maxlag(j):maxlag(j), для j = 1:NY.

  • Если требуется обработать вектор строки x длины LX, содержащей одну выборку из LX различных каналов, необходимо добавить одну или несколько строк нулей к x так, что она появляется в виде матрицы. Затем каждый столбец x будет считаться каналом.

    Например, x = [1 1 1 1] рассматривается как один канал, содержащий четыре выборки. Чтобы рассматривать его как четыре различных канала, каждый канал, содержащий одну выборку, определяет новую матрицу xm:

    Каждый столбец xm соответствует одному каналу, каждый из которых содержит выборки 1 и 0.

    xm = [1 1 1 1;
          0 0 0 0];
    

Алгоритмы

finddelay функция использует xcorr функция для определения взаимной корреляции между каждой парой сигналов на всех возможных лагах, определенных пользователем. Затем вычисляют нормализованную взаимную корреляцию между каждой парой сигналов. Оценочная задержка задается отрицательным значением запаздывания, для которого нормализованная взаимная корреляция имеет наибольшее абсолютное значение.

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

Пары сигналов не обязательно должны быть точными задержанными копиями друг друга. Однако оцененная задержка имеет полезное значение, только если имеется достаточная корреляция между, по меньшей мере, одной парой задержанных сигналов.

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

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

.

См. также

| | | |