Contenu principal

xcorr

R2026b

Description

r = xcorr(x,y) renvoie la corrélation croisée de deux séquences à temps discret. La corrélation croisée mesure la similarité entre un vecteur x et des copies décalées (retardées) d’un vecteur y en fonction du décalage. Si x et y n’ont pas la même longueur, la fonction ajoutez des zéros à la fin du vecteur le plus court pour qu’il soit de même longueur que l’autre.

exemple

r = xcorr(x) renvoie la séquence d’autocorrélation de x. Si x est une matrice, r est une matrice dont les colonnes contiennent les séquences d’autocorrélation et de corrélation croisée pour toutes les combinaisons des colonnes de x.

exemple

r = xcorr(___,maxlag) limite la plage de décalage de -maxlag à maxlag pour l’une ou l’autre des syntaxes précédentes.

exemple

r = xcorr(___,scaleopt) spécifie également une option de normalisation pour la corrélation croisée ou l’autocorrélation. Toute autre option que "none" (option par défaut) nécessite que x et y aient la même longueur.

exemple

r = xcorr(___,LagSelection=range) spécifie s’il faut renvoyer la corrélation croisée uniquement pour les décalages non négatifs, uniquement pour les décalages non positifs ou pour tous les décalages. (depuis R2026b)

exemple

[r,lags] = xcorr(___) renvoie également les décalages auxquels les corrélations ont été calculées.

exemple

Exemples

réduire tout

Créez un vecteur x et un vecteur y égal à x décalé de 5 éléments vers la droite. Calculez et tracez la corrélation croisée estimée de x et y. Le pic le plus élevé se produit à la valeur de décalage pour laquelle les éléments de x et y sont exactement identiques (-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.

Calculez et tracez l’autocorrélation estimée du vecteur x. Le pic le plus élevé se produit au décalage nul, quand x est exactement identique à lui-même.

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.

Calculez et tracez la corrélation croisée normalisée des vecteurs x et y avec un pic unitaire et spécifiez un décalage maximal de 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.

Créez deux signaux pour lesquels y est une copie retardée de x et utilisez la corrélation croisée pour déterminer ce retard.

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

Dans la corrélation croisée de x et y, un décalage négatif signifie que y est retardé par rapport à x, tandis qu’un décalage positif signifie que x est retardé par rapport à y.

Si vous savez que y est retardé par rapport à x, le pic de la corrélation croisée doit correspondre à un décalage négatif. Spécifiez LagSelection="nonpositive" pour renvoyer uniquement les décalages non positifs.

[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

Déterminez le retard entre les signaux en trouvant le décalage au pic de la corrélation croisée. Le résultat indique que y est en retard de 3 échantillons par rapport à x.

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

Arguments d'entrée

réduire tout

Tableau en entrée, spécifié sous forme de vecteur, de matrice ou de tableau multidimensionnel. Si x est un tableau multidimensionnel, xcorr traite chacune des colonnes pour toutes les dimensions et renvoie chaque autocorrélation et corrélation croisée en tant que colonnes d’une matrice.

Le tableau en entrée x peut être une matrice creuse ou un vecteur creux de type double ou single. (depuis R2026b)

Types de données : double | single
Support des nombres complexes : Oui

Tableau en entrée, spécifié sous forme de vecteur.

Le tableau en entrée y peut être un vecteur creux de type double ou single. (depuis R2026b)

Types de données : double | single
Support des nombres complexes : Oui

Décalage maximal, spécifié sous forme d’un scalaire entier. Le décalage maximal est le nombre d’échantillons le plus éloigné selon lequel xcorr décale une séquence d’entrée par rapport à l’autre. Si vous spécifiez maxlag, alors xcorr calcule la corrélation croisée pour les décalages compris entre -maxlag et maxlag. Si vous ne spécifiez pas maxlag, le décalage maximal par défaut est N - 1, où N est la plus élevée des longueurs de x et y, et xcorr calcule la corrélation croisée pour les décalages compris entre -(N - 1) et N - 1.

Types de données : single | double

Option de normalisation, spécifiée sous une des formes suivantes.

  • "none" : corrélation croisée brute sans mise à l’échelle. "none" est la seule option valide quand x et y n’ont pas la même longueur.

  • "biased" : estimation biaisée de la corrélation croisée :

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

  • "unbiased" : estimation non biaisée de la corrélation croisée :

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

  • "normalized" ou "coeff" : normalise la séquence pour que les autocorrélations à décalage nul soient égales à 1 :

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

Depuis R2026b

Sélection de décalages à inclure dans la sortie, spécifiée sous forme d’une des valeurs suivantes :

  • "all" : renvoie la corrélation croisée pour tous les décalages compris entre -maxlag et maxlag.

  • "nonnegative" : renvoie la corrélation croisée uniquement pour les décalages non négatifs compris entre 0 et maxlag.

  • "nonpositive" : renvoie la corrélation croisée uniquement pour les décalages non positifs compris entre -maxlag et 0.

Arguments de sortie

réduire tout

Corrélation croisée ou autocorrélation, renvoyée sous forme de vecteur ou de matrice.

Si x est une matrice M × N, xcorr(x) renvoie une matrice (2M – 1) × N2 avec les autocorrélations et corrélations croisées des colonnes de x. Si vous spécifiez maxlag, r a une taille de (2 × maxlag + 1) × N2.

Si vous spécifiez LagSelection en tant que "nonnegative" ou "nonpositive", alors r contient maxlag + 1 lignes au lieu de 2 x maxlag + 1 lignes.

Par exemple, si S contient trois colonnes S=(x1x2x3), le résultat de R = xcorr(S) est organisé comme suit :

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

Indices de décalage, renvoyés sous forme de vecteur.

En savoir plus

réduire tout

Références

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

Capacités étendues

développer tout

Historique des versions

Introduit avant R2006a

développer tout

Voir aussi

| | |