Функция расчета взаимной и автокорреляции
z = xcorr(x,y);
x, y - массив-строка (вектор) действительных чисел.
xcorr – расcчитывает значение взаимной корреляционной функции между векторами x и y. Если размерность векторов отличается, то вектор меньшей размерности будет дополнен нулями до размерности второго вектора. Если в качестве аргументов задать один и тот же массив, то функция будет возвращать значение автокорреляционной функции заданного массива.
Функция возвращает массив значений взаимной корреляционной функции аргументов x и y. Размерность выходного массива равна count×2-1, где count - наибольшая размерность входных аргументов.
count = 16; // задаем число элементов x = vector(count); // объявляем массив х n = 0..(count-1); for (i=1, cols(n)) x[i] = 0.7^n[i]; // заполняем массив х y = circshift(x,5); // массив y создаем смещением массива х z1 = xcorr(x,y); // считаем взаимную корреляцию z2 = xcorr(x,x); // считаем автокорреляцию вектора х lags = vector(count*2-1); // создаем и заполняем массив смещений для построения графиков корреляционных функций for (i=-1*(count-1), count-1) lags[i+count] = i;
Вычисляется взаимная корреляция векторов х и у (где y - это x, циклически смещенный вправо на 5 элементов), а также автокорреляция вектора х.
Рисунок 1. Взаимная корреляционная функция массивов X и Y
Рисунок 2. Автокорреляционная функция массива X