xcorr
имеет по существу два синтаксиса.
c = xcorr(x, y)
вычисляет функцию взаимной корреляции между двумя скалярными сигналами (с учетом как векторы) и
c = xcorr(x)
вычисляет функцию автокорреляции сигнала, если x
является вектором, и авто- и функции взаимной корреляции между всеми столбцами x
, если это матрица. Если x
имеет размер n
x p
, то c
имеет размер 2*n-1
x p^2
.
Когда вы пишете
c = xcorr(x, y);
с две матрицыx
и y
, я предполагаю, что вы хотите, функции взаимной корреляции между всеми сигналами в x
со всеми сигналами в y
. xcorr
не может сделать это из коробки. Однако, если две матрицы оба имеют n
строки, вы можете написать
c = xcorr([x, y]);
получить авто- и кросс-корреляционные функции между всеми сигналами, которые находятся в x
илиy
. c
имеет размер 2*n-1
x (p1+p2)^2
, где p1
и p2
- это числа сигналов (столбцов) в двух матрицах. Затем можно изменить форму и обрезать результат:
c = reshape(c, 2*n-1, p1+p2, p1+p2);
c = c(:, 1 : p1, p1+1 : end);
В результате получается трехмерная матрица, где первое измерение соответствует запаздыванию, вторые перечисляют сигналы в x
и третий перечисляет сигналы в y
; его размер составляет 2*n-1*
x p1
x p2
.
Спасибо Donda, вот что мне нужно – Yann
Добро пожаловать! –