Hauptinhalt

xcorr

R2026b

Kreuzkorrelation

Beschreibung

r = xcorr(x,y) gibt die Kreuzkorrelation zweier zeitdiskreter Sequenzen zurück. Die Kreuzkorrelation misst die Ähnlichkeit zwischen einem Vektor x und verschobenen (verzögerten) Kopien eines Vektors y als Funktion der Verzögerung. Wenn x und y unterschiedliche Längen aufweisen, hängt die Funktion Nullen an das Ende des kürzeren Vektors an, sodass er dieselbe Länge wie der andere Vektor hat.

Beispiel

r = xcorr(x) gibt die Autokorrelationssequenz von x zurück. Wenn x eine Matrix ist, ist r eine Matrix, deren Spalten die Autokorrelations- und Kreuzkorrelationssequenzen für alle Kombinationen der Spalten von x enthalten.

Beispiel

r = xcorr(___,maxlag) begrenzt den Verzögerungsbereich in den vorstehenden Syntaxen von -maxlag bis maxlag.

Beispiel

r = xcorr(___,scaleopt) gibt zudem eine Normalisierungsoption für die Kreuzkorrelation oder Autokorrelation an. Eine andere Option als "none" (Standardeinstellung) erfordert, dass x und y dieselbe Länge aufweisen.

Beispiel

r = xcorr(___,LagSelection=range) gibt an, ob die Kreuzkorrelation nur für nicht negative, nur für nicht positive oder für alle Verzögerungen zurückgegeben wird. (seit R2026b)

Beispiel

[r,lags] = xcorr(___) gibt zudem die Verzögerungen zurück, bei denen die Korrelationen berechnet werden.

Beispiel

Beispiele

alle reduzieren

Erstellen Sie einen Vektor x und einen Vektor y, der x nach Verschiebung um fünf Elemente nach rechts entspricht. Berechnen und plotten Sie die geschätzte Kreuzkorrelation von x und y. Die größte Spitze tritt bei dem Verzögerungswert auf, wenn die Elemente x und y sich präzise entsprechen (-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.

Berechnen und plotten Sie die geschätzte Autokorrelation eines Vektors x. Die größte Spitze tritt bei Null Verzögerung auf, wenn x exakt sich selbst entspricht.

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.

Berechnen und plotten Sie die normalisierte Kreuzkorrelation der Vektoren x und y mit Spitze Einselement und geben Sie eine maximale Verzögerung von 10 an.

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.

Erstellen Sie zwei Signale, bei denen y eine verzögerte Kopie von x ist, und bestimmen Sie die Verzögerung mithilfe der Kreuzkorrelation.

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

Bei der Kreuzkorrelation von x und y bedeutet eine negative Verzögerung, dass y in Bezug auf x verzögert ist, und eine positive Verzögerung beschreibt eine relative Verzögerung von x zu y.

Wenn Sie wissen, dass y eine relative Verzögerung zu x aufweist, muss der Scheitelpunkt der Kreuzkorrelation eine negative Verzögerung sein. Geben Sie LagSelection="nonpositive" an, um nur die nicht positiven Verzögerungen zurückzugeben.

[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

Bestimmen Sie die Verzögerung zwischen den Signalen, indem Sie die Verzögerung am Scheitelpunkt der Kreuzkorrelation ermitteln. Das Ergebnis gibt an, dass y eine Verzögerung von 3 Stichproben zu x aufweist.

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

Eingabeargumente

alle reduzieren

Eingabearray, angegeben als Vektor, Matrix oder mehrdimensionales Array. Wenn x ein mehrdimensionales Array ist, operiert xcorr spaltenweise über alle Dimensionen hinweg und gibt jede Autokorrelation und Kreuzkorrelation als Spalten einer Matrix zurück.

Das Eingabearray x kann eine dünn besetzte Matrix oder ein Vektor vom Typ double oder single sein. (seit R2026b)

Datentypen: double | single
Unterstützung komplexer Zahlen: Ja

Eingabearray, angegeben als Vektor.

Das Eingabearray y kann ein dünn besetzter Vektor vom Typ double oder single sein. (seit R2026b)

Datentypen: double | single
Unterstützung komplexer Zahlen: Ja

Maximale Verzögerung, angegeben als ganzzahliger Skalar. Die maximale Verzögerung ist die am weitesten entfernte Anzahl an Stichproben, bei der xcorr eine Eingabesequenz relativ zur anderen verschiebt. Wenn Sie maxlag angeben, berechnet xcorr die Kreuzkorrelation für Verzögerungen von -maxlag bis maxlag. Wenn Sie maxlag nicht angeben, entspricht die maximale Verzögerung standardmäßig N – 1, wobei N die größere Länge von x und y ist und xcorr die Kreuzkorrelation für Verzögerungen von –(N – 1) bis N – 1 berechnet.

Datentypen: single | double

Normalisierungsoption, angegeben als eine der folgenden Optionen:

  • "none" – Nicht skalierte Kreuzkorrelation. "none" ist die einzige gültige Option, wenn x und y unterschiedliche Längen aufweisen.

  • "biased" – Verzerrte Schätzung der Kreuzkorrelation:

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

  • "unbiased" – Unverzerrte Schätzung der Kreuzkorrelation:

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

  • "normalized" oder "coeff" – Normalisiert die Sequenz, sodass die Autokorrelationen bei null Verzögerung 1 entsprechen:

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

Seit R2026b

Auswahl der in der Ausgabe enthaltenen Verzögerungen, angegeben als einer der folgenden Werte:

  • "all": Gibt die Kreuzkorrelation für alle Verzögerungen von -maxlag bis maxlag zurück.

  • "nonnegative": Gibt die Kreuzkorrelation nur für nicht negative Verzögerungen zurück, von 0 bis maxlag.

  • "nonpositive": Gibt die Kreuzkorrelation nur für nicht positive Verzögerungen zurück, von -maxlag bis 0.

Ausgabeargumente

alle reduzieren

Kreuzkorrelation oder Autokorrelation, zurückgegeben als Vektor oder Matrix.

Wenn x eine M × N-Matrix ist, gibt xcorr(x) eine (2M – 1) × N2-Matrix mit den Autokorrelationen und Kreuzkorrelationen der Spalten von x zurück. Wenn Sie maxlag angeben, weist r die Größe (2 x maxlag + 1) x N2 auf.

Wenn Sie LagSelection als "nonnegative" oder "nonpositive" angeben, enthält r maxlag +1 Zeilen anstatt 2 x maxlag + 1 Zeilen.

Wenn S beispielsweise drei Spalten S=(x1x2x3) aufweist, wird das Ergebnis von R = xcorr(S) als

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

organisiert.

Verzögerungsindizes, zurückgegeben als Vektor.

Mehr über

alle reduzieren

Referenzen

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

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt vor R2006a

alle erweitern

Siehe auch

| | |