Contenuto principale

xcorr

R2026b

Correlazione incrociata

Descrizione

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 = xcorr(___,LagSelection=range) specifica se restituire la correlazione incrociata solo per gli sfasamenti non negativi, solo per gli sfasamenti non positivi oppure per tutti gli sfasamenti. (da R2026b)

esempio

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

esempio

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.

Creare due segnali dove y è una copia ritardata di x e utilizzare la correlazione incrociata per determinare il ritardo.

x = [1 0 0 0 0];
y = [0 0 0 1 0];

Nella correlazione incrociata di x e y, uno sfasamento negativo indica che y è ritardato rispetto a x, mentre uno sfasamento positivo indica che x è ritardato rispetto a y.

Se è noto che y è ritardato rispetto a x, la correlazione incrociata di picco deve essere a uno sfasamento negativo. Specificare LagSelection="nonpositive" per restituire solo gli sfasamenti non positivi.

[c,lags] = xcorr(x,y,LagSelection="nonpositive")
c = 1×5

         0    1.0000         0   -0.0000         0

lags = 1×5

    -4    -3    -2    -1     0

Determinare il ritardo tra i segnali trovando lo sfasamento in corrispondenza del picco della correlazione incrociata. Il risultato indica che y è in ritardo di 3 campioni rispetto a x.

[~,idx] = max(c);
delay = lags(idx)
delay = 
-3

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.

L'array di input x può essere una matrice sparsa o un vettore di tipo double o single. (da R2026b)

Tipi di dati: double | single
Supporto numeri complessi: Sì

Array di input, specificato come vettore.

L'array di input y può essere un vettore sparso di tipo double o single. (da R2026b)

Tipi di dati: double | single
Supporto numeri complessi: Sì

Sfasamento massimo, specificato come scalare intero. Lo sfasamento massimo è il numero massimo di campioni di cui xcorr sposta una sequenza di input rispetto all'altra. Se si specifica maxlag, xcorr calcola la correlazione incrociata per gli sfasamenti da -maxlag a maxlag. Se non si specifica maxlag, lo sfasamento massimo predefinito è N - 1, dove N è il maggiore tra le lunghezze di x e y e xcorr calcola la correlazione incrociata per gli sfasamenti da -(N - 1) a N - 1.

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).

Da R2026b

Selezione degli sfasamenti da includere nell'output, specificata come uno dei seguenti valori:

  • "all": restituisce la correlazione incrociata per tutti gli sfasamenti da -maxlag a maxlag.

  • "nonnegative": restituisce la correlazione incrociata solo per gli sfasamenti non negativi, da 0 a maxlag.

  • "nonpositive": restituisce la correlazione incrociata solo per gli sfasamenti non positivi, da -maxlag a 0.

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.

Se si specifica LagSelection come "nonnegative" o "nonpositive", r ha un numero di righe pari a maxlag + 1 anziché 2 x maxlag + 1.

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

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

espandi tutto

Cronologia versioni

Introduzione prima di R2006a

espandi tutto

Vedi anche

| | |