Main Content

xcorr

Correlazione incrociata

Descrizione

esempio

r = xcorr(x,y) restituisce la correlazione incrociata di due sequenze a tempo discreto. La correlazione incrociata misura la somiglianza tra un vettore x e le copie spostate (sfasate) di un vettore y in funzione dello sfasamento. Se x e y hanno lunghezze diverse, la funzione aggiunge degli zeri alla fine del vettore più corto in modo che abbia la stessa lunghezza dell'altro.

esempio

r = xcorr(x) restituisce la sequenza di autocorrelazione di x. Se x è una matrice, r è una matrice le cui colonne contengono le sequenze di autocorrelazione e di correlazione incrociata per tutte le combinazioni di colonne di x.

esempio

r = xcorr(___,maxlag) limita l'intervallo di sfasamento da -maxlag a maxlag per una delle sintassi precedenti.

esempio

r = xcorr(___,scaleopt) specifica inoltre un'opzione di normalizzazione per la correlazione incrociata o l'autocorrelazione. Qualsiasi opzione diversa da 'none' (predefinita) richiede che x e y abbiano la stessa lunghezza.

esempio

[r,lags] = xcorr(___) restituisce inoltre gli sfasamenti a cui vengono calcolate le correlazioni.

Esempi

comprimi tutto

Creare un vettore x e un vettore y che sia uguale a x spostato di 5 elementi verso destra. Calcolare e tracciare la correlazione incrociata stimata di x e y. Il picco maggiore si verifica al valore di sfasamento quando gli elementi di x e y coincidono esattamente (-5).

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

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

Calcolare e tracciare l'autocorrelazione stimata di un vettore x. Il picco maggiore si verifica con sfasamento zero, quando x corrisponde esattamente a sé stesso.

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

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

Calcolare e tracciare la correlazione incrociata normalizzata dei vettori x e y con picco unitario e specificare uno sfasamento massimo 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 object. The axes object contains an object of type stem.

Argomenti di input

comprimi tutto

Array di input, specificato come vettore, matrice o array multidimensionale. Se x è un array multidimensionale, xcorr opera colonna per colonna su tutte le dimensioni e restituisce ciascuna autocorrelazione e correlazione incrociata come colonne di una matrice.

Tipi di dati: single | double
Supporto numeri complessi:

Array di input, specificato come vettore.

Tipi di dati: single | double
Supporto numeri complessi:

Sfasamento massimo, specificato come scalare intero. Se si specifica maxlag, la sequenza di correlazione incrociata va da -maxlag a maxlag. Se non si specifica maxlag, l'intervallo di sfasamento è uguale a 2N – 1, dove N è la maggiore delle lunghezze di x e y.

Tipi di dati: single | double

Opzione di normalizzazione, specificata in uno dei seguenti modi.

  • 'none': correlazione incrociata grezza, non scalata. 'none' è l'unica opzione valida quando x e y hanno lunghezze diverse.

  • 'biased': stima distorta della correlazione incrociata:

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

  • 'unbiased': stima non distorta della correlazione incrociata:

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

  • 'normalized' o 'coeff': normalizza la sequenza in modo che le autocorrelazioni con zero sfasamento siano uguali a 1:

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

Argomenti di output

comprimi tutto

Correlazione incrociata o autocorrelazione, restituite come vettore o matrice.

Se x è una matrice M × N, xcorr(x) restituisce una matrice (2M – 1) × N2 con le autocorrelazioni e le correlazioni incrociate delle colonne di x. Se si specifica maxlag, r ha grandezza (2 × maxlag + 1) × N2.

Ad esempio, se S ha tre colonne S=(x1x2x3), il risultato di R = xcorr(S) è organizzato come

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

Indici di sfasamento, restituiti come vettore.

Ulteriori informazioni

comprimi tutto

Correlazione incrociata e autocorrelazione

Il risultato di xcorr può essere interpretato come una stima della correlazione tra due sequenze casuali o come la correlazione deterministica tra due segnali deterministici.

La sequenza reale di correlazione incrociata di due processi casuali congiuntamente stazionari xn e yn, è data da

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

dove < n < , l'asterisco indica il coniugato complesso ed E è l'operatore di valore previsto. xcorr può solo stimare la sequenza perché, in pratica, è disponibile solo un segmento finito di una realizzazione del processo casuale di lunghezza infinita.

Per impostazione predefinita, xcorr calcola le correlazioni grezze senza normalizzazione:

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

Il vettore di output c contiene elementi dati da

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

In generale, la funzione di correlazione richiede una normalizzazione per produrre una stima accurata. È possibile controllare la normalizzazione della correlazione utilizzando l'argomento di input scaleopt.

Riferimenti

[1] Buck, John R., Michael M. Daniel, and Andrew C. Singer. Computer Explorations in Signals and Systems Using MATLAB®. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 2002.

[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

Funzionalità estese

Vedi anche

| | |