exponenta event banner

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, диапазон запаздывания равен 2N - 1, где N - большая из длин x и y.

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

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

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

  • 'biased' - Смещенная оценка взаимной корреляции:

    R ^ xy, смещенный (m) = 1NR ^ xy (m).

  • 'unbiased' - Несмещенная оценка взаимной корреляции:

    R ^ xy, несмещенный (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) возвращает матрицу (2M - 1) × N2 с автокорреляциями и перекрестными корреляциями столбцов x. При указании maxlag, то r имеет размер (2 × maxlag + 1)  × N2.

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

R = (Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

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

Подробнее

свернуть все

Взаимная корреляция и автокорреляция

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

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

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

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

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

R ^ xy (m) ={∑n=0N−m−1xn+myn∗,m≥0,R^yx * (m), m < 0.

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

c (m) = R ^ xy (m N), m = 1, 2,..., 2N − 1.

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

Ссылки

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

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

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

.

См. также

| | |