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(<reservedrangesplaceholder1>): maxlag(j), для j = 1: NY .
    Целочисленная строка или вектор-столбецМатрица размера MX -by- NX ( MX > 1,  NX > 1)Вектор-столбец длины LY ≥ 1Перекрестная корреляция столбцовых j X и Y в области значений лагов - maxlag(<reservedrangesplaceholder1>): 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(<reservedrangesplaceholder1>): 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++ с помощью Coder™ MATLAB ®

.

См. также

| | | |