2014-02-19 7 views
0

У меня есть вопрос о функции xcorr в MATLAB.xcorr между двумя матрицами

В настоящее время эта функция может вычислить автокорреляцию матрицы, но не может рассчитать кросс-корреляции 2 матриц:

A=[1,2;3,4]; 
B=[5,6;7,8]; 

xcorr(A); %% Possible 
xcorr(A,A); %% Not Possible 
xcorr(A,B); %% Not Possible 

вы знаете о каком-либо обходном пути, чтобы сделать это, но без использования for цикла?

ответ

1

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.

+0

Спасибо Donda, вот что мне нужно – Yann

+0

Добро пожаловать! –

2

Для обработки взаимной корреляции между матрицами используйте только 2-мерную версию: xcorr2.

Так, чтобы вычислить автокорреляцию вобще

xcorr2(A) 

время, чтобы найти взаимную корреляцию двух матриц

xcorr2(A,B) 

Например, с A, B результат:

8 23 14 
30 70 38 
18 39 20 
+0

благодарит за ответ. что классно с xcorr, так это то, что я могу рассматривать матрицы как наборы 1D сигналов (как это в моем случае). Таким образом, выход автокорреляции из xcorr является матрицей (2L-1, L * L). Я предполагаю, что с xcorr2 я могу получить одно гнездо для цикла, но все же я думаю, что есть недостающая функциональность ... – Yann

 Смежные вопросы

  • Нет связанных вопросов^_^