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 (xY) возвращает оценку задержки через взаимную корреляцию. Однако эта предполагаемая задержка имеет полезное значение, только если существует достаточная корреляция между задержанными версиями x и y.

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

    maxlagXYD вычисляется...
    Скаляр с целочисленным знакомСтрока или вектор-столбец или матрицаСтрока или вектор-столбец или матрицаПерекрестная корреляция столбцов X и Y в области значений задержек –maxlag:maxlag.
    Строка с целочисленным знаком или вектор-столбецСтрока или вектор-столбец длины LX ≥ 1Матрица размера MY-by-NY (MY > 1, NY > 1)Перекрестная корреляция X и столбец j Y в области значений задержек –maxlagJ:(j), для j = 1:NY.
    Строка с целочисленным знаком или вектор-столбецМатрица размера MX-by-NX (MX > 1, NX > 1)Строка или вектор-столбец длины LY ≥ 1Перекрестная корреляция столбца j X и Y в области значений задержек –maxlagJ:(j), для j = 1:NX.
    Строка с целочисленным знаком или вектор-столбецМатрица размера MX-by-NX (MX > 1, NX > 1)Матрица размера MY- - NY (MY > 1, NY = NX > 1)Перекрестная корреляция столбца j X и столбец j Y в области значений задержек –maxlagJ:(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™.

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

| | | |