finddelay

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

Синтаксис

D = finddelay(X,Y)
D = finddelay(...,maxlag)

Описание

D = finddelay(X,Y), то, где X и Y являются строкой или вектор-столбцами, возвращает оценку задержки D между X и Y, где X служит ссылочным вектором. Если Y задерживается относительно X, то D положителен. Если Y совершенствуется относительно X, то D отрицателен. Задержки X и Y могут быть введены преднезаконченными нулями.

X и Y не должны быть точными задержанными копиями друг друга, когда finddelay(X,Y) возвращает оценку задержки через взаимную корреляцию. Однако эта предполагаемая задержка имеет полезное значение, только если существует достаточная корреляция между задержанными версиями X и Y. Кроме того, если несколько задержек возможны, когда в случае периодических сигналов, задержка с самым маленьким абсолютным значением возвращена. В случае, что и положительное и отрицательная задержка с тем же абсолютным значением возможны, возвращена положительная задержка.

D = finddelay(X,Y), где X является матрицей размера MX-by-NX (MX > 1 и NX > 1) и Y является матрицей размера MY-by-NY (MY > 1 и NY > 1), возвращает вектор - строку D предполагаемых задержек между каждым столбцом X и соответствующим столбцом Y. С этим использованием количество столбцов X должно быть равно количеству столбцов Y (т.е. NX = NY).

D = finddelay(...,maxlag), использование maxlag как максимальный размер окна корреляции раньше находило предполагаемую задержку (задержки) между X и Y. Использование maxlag детализировано в приведенной ниже таблице.

По умолчанию maxlag равен макс. (LX, LY) – 1 для двух векторных входных параметров (где LX и LY являются длинами X и Y, соответственно), макс. (MX, MY) – 1 для двух матричных входных параметров, и макс. (LX, MY) – 1 или макс. (MX, LY) – 1 для одного векторного входа и одного матричного входа. Если maxlag вводится как [], он заменяется значением по умолчанию. Если какой-либо элемент maxlag отрицателен, это заменяется его абсолютным значением. Если какой-либо элемент maxlag не является с целочисленным знаком, или является комплексным, Inf или NaN, то finddelay возвращает ошибку.

Вычисление вектора предполагаемых задержек, 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- - NY (MY > 1, NY = NX > 1)Перекрестная корреляция столбца j X и столбца j Y в области значений задержек –maxlag (j): maxlag (j), для j = 1:NY.

Обработка X как несколько каналов

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

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

Xm = [1 1 1 1;
      0 0 0 0];

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

Примеры

свернуть все

Следующее показывает 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

Алгоритмы

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

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

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

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

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

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

| | | |