xcorr

Перекрестная корреляция

Описание

пример

r = xcorr(x,y) возвращает перекрестную корреляцию двух последовательностей в дискретном времени. Перекрестная корреляция измеряет подобие между вектором x и сдвинутые (отстающие) копии вектора y как функцию задержки. Если x и y имеют разную длину, функция добавляет нули к концу более короткого вектора, так что она имеет ту же длину, что и другой.

пример

r = xcorr(x) возвращает автокорреляционную последовательность x. Если x является матрицей, тогда r - матрица, столбцы которой содержат автокорреляционные и перекрестные корреляционные последовательности для всех комбинаций столбцов x.

пример

r = xcorr(___,maxlag) ограничивает область значений задержек от -maxlag на maxlag для любого из предыдущих синтаксисов.

пример

r = xcorr(___,scaleopt) также задает опцию нормализации для перекрестной корреляции или автокорреляции. Любая опция кроме 'none' (по умолчанию) требует x и y иметь ту же длину.

пример

[r,lags] = xcorr(___) также возвращает лаги, при которых вычисляются корреляции.

Примеры

свернуть все

Создайте вектор x и вектор y что равно x сдвинут на 5 элементов вправо. Вычислите и постройте график предполагаемой перекрестной корреляции x и y. Самый большой всплеск происходит при значении задержки, когда элементы x и y точно соответствовать (-5).

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y);
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

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

n = 0:15;
x = 0.84.^n;
[c,lags] = xcorr(x);
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

Вычислите и постройте график нормированной перекрестной корреляции векторов x и y с пиком единицы и задайте максимальное отставание в 10.

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y,10,'normalized');
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

Входные параметры

свернуть все

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

Типы данных: single | double
Поддержка комплексного числа: Да

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

Типы данных: single | double
Поддержка комплексного числа: Да

Максимальная задержка, заданная как целочисленный скаляр. Если вы задаете maxlag, возвращенная последовательность перекрестной корреляции находится в областях значений от -maxlag на maxlag. Если вы не задаете maxlag, область значений задержки равняется 2  N - 1, где N является большим из длин x и y.

Типы данных: single | double

Опция нормализации, заданная как один из следующих.

  • 'none' - Необработанная, немасштабированная перекрестная корреляция. 'none' является единственной допустимой опцией, когда x и y имеют разную длину.

  • 'biased' - Смещенная оценка перекрестной корреляции:

    R^xy,biased(m)=1NR^xy(m).

  • 'unbiased' - Объективная оценка перекрестной корреляции:

    R^xy,unbiased(m)=1N|m|R^xy(m).

  • 'normalized' или 'coeff' - Нормализует последовательность так, чтобы автокорреляции при нулевой задержке равнялись 1:

    R^xy,coeff(m)=1R^xx(0)R^yy(0)R^xy(m).

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

свернуть все

Перекрестная корреляция или автокорреляция, возвращенные в виде вектора или матрицы.

Если x является M × N матрицей, затем xcorr(x) возвращает a (2  M - 1 ) × N2 матрица с автокорреляциями и перекрестными корреляциями столбцов x. Если вы задаете maxlag, затем r имеет размер (2 × maxlag + 1)  × <reservedrangesplaceholder0>2.

Для примера, если S имеет три столбца, S=(x1x2x3), затем результат R = xcorr(S) организовано как

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

Индексы задержки, возвращенные как вектор.

Подробнее о

свернуть все

Перекрестная корреляция и автокорреляция

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

Истинная последовательность перекрестной корреляции двух совместно стационарных случайных процессов, xn и yn, задается как

Rxy(m)=E{xn+myn*}=E{xnynm*},

где  ∞ <  n < ∞, звездочка обозначает комплексное сопряжение, и E является оператором ожидаемого значения. xcorr может только оценить последовательность, потому что на практике доступен только конечный сегмент одной реализации случайного процесса бесконечной длины.

По умолчанию xcorr вычисляет необработанные корреляции без нормализации:

R^xy(m)={n=0Nm1xn+myn,m0,R^yx*(m),m<0.

Вектор выхода, c, имеет элементы, заданные как

c(m)=R^xy(mN),m=1,2,,2N1.

В целом, корреляционная функция требует нормализации, чтобы получить точную оценку. Нормализацией корреляции можно управлять при помощи входного параметра scaleopt.

Ссылки

[1] Бак, Джон Р., Майкл М. Дэниел и Эндрю С. Сингер. Компьютерные исследования в сигналах и системах, использующих MATLAB®. 2-е издание. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2002.

[2] Стоика, Петре и Рэндольф Мозес. Спектральный анализ сигналов. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2005.

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

.

См. также

| | |