CCF (FPScript)

07.02.2018
 Daten mathematisch analysieren > Referenz > FPScript-Funktionen > Signalanalyse > CCF

CCF (FPScript)

<< Klicken, um Inhaltsverzeichnis anzuzeigen >>

  Daten mathematisch analysieren > Referenz > FPScript-Funktionen > Signalanalyse >

CCF (FPScript)

Berechnet die Kreuzkorrelationsfunktion zweier Signale.

Syntax

CCF(Signal1, Signal2 [ , Mode = CORRELATIONPRODUCT_NONCIRCULAR ])

 

Die Syntax der CCF-Funktion besteht aus folgenden Teilen:

Teil

Beschreibung

Signal1

Das Signal, dessen Korrelation mit dem zweiten Signal berechnet wird.

Erlaubte Datenstrukturen sind Datenreihe, Datenmatrix, Signal und Signalreihe. Es sind alle numerischen Datentypen erlaubt.

Für die X-Komponente gelten zusätzliche Beschränkungen. Die Werte müssen einen konstanten positiven Abstand haben.

Bei komplexen Datentypen erfolgt eine Betragsbildung.

Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste.

Signal2

Der Signal, dessen Korrelation mit dem ersten Signal berechnet wird.

Erlaubte Datenstrukturen sind Datenreihe, Datenmatrix, Signal und Signalreihe. Es sind alle numerischen Datentypen erlaubt.

Für die X-Komponente gelten zusätzliche Beschränkungen. Die Werte müssen einen konstanten positiven Abstand haben.

Bei komplexen Datentypen erfolgt eine Betragsbildung.

Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste.

Mode

Gibt den Berechnungsmodus an.

Das Argument Mode kann folgende Werte haben:

Konstante

Bedeutung

CORRELATIONPRODUCT_CIRCULAR

Zirkuläres Kreuzkorrelationsprodukt für periodische Signale.

CORRELATIONPRODUCT_NONCIRCULAR

Nicht-zirkuläres Kreuzkorrelationsprodukt für transiente Signale.

CORRELATION_CIRCULAR

Zirkuläre Kreuzkorrelation für periodische Signale.

CORRELATION_NONCIRCULAR

Nicht-zirkuläre Kreuzkorrelation für transiente Signale.

CORRELATION_CIRCULAR_NORM

Zirkuläre normierte Kreuzkorrelation für periodische Signale.

CORRELATION_NONCIRCULAR_NORM

Nicht-zirkuläre normierte Kreuzkorrelation für transiente Signale.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert CORRELATIONPRODUCT_NONCIRCULAR gesetzt.

Anmerkungen

Das Ergebnis ist immer vom Datentyp 64-Bit Fließkomma.

Die Einheit des Ergebnisses ist gleich dem Produkt der Einheiten von Signal1 und Signal2. Die Kreuzkorrelation für zwei Datenreihen s und g ist definiert als:

mit dem Korrelationsprodukt:

und N, der Anzahl der Werte in s und g.

Die normierte Kreuzkorrelation wird auf den Maximalwert normiert, d. h. an dieser Stelle hat das Ergebnis den Wert Eins.

Die Berechnung erfolgt in allen Fällen im Frequenzbereich nach folgender Formel:

IRFFTn(*FFTn(Signal1) * FFTn(Signal2))

Bei zweidimensionalen Argumenten erfolgt die Berechnung spaltenweise und das Ergebnis ist ebenfalls zweidimensional. Hat eines der Argumente eine X-Komponente, so gilt dies auch für das Ergebnis. Diese enthält dann den Zeitversatz τ der Kreuzkorrelationsfunktion.

Bei der zirkulären Kreuzkorrelation erfolgt die Berechnung unter der Annahme, dass in Signal1 und Signal2 eine oder mehrere vollständige Perioden der zu analysierenden Signale abgelegt sind. In diesem Fall müssen die Zeilenanzahlen von Signal1 und Signal2 übereinstimmen und gerade sein. Bei ungerader Zeilenanzahl werden die Signale um einen Wert verkürzt. Die Berechnung erfolgt dann exakt wie oben angegeben. Die Anzahl der Zeilen im Ergebnis ist immer gleich der Zeilenanzahl der verkürzten Signale. Falls das Ergebnis eine X-Komponente hat, dann befindet sich der Wert τ = 0 immer am Anfang dieser X-Datenreihe. Es werden also keine negativen τ berechnet. Wegen der Periodizität der Kreuzkorrelation in diesem Fall können die Werte in der zweiten Hälfte des Ergebnisses jedoch auch als negative τ aufgefasst werden.

Die nicht-zirkuläre Kreuzkorrelation basiert auf der Annahme, dass die Signale außerhalb der durch die Datensätze Signal1 und Signal2 abgedeckten Ausschnitte den Betrag Null haben. Vor dem Übergang in den Frequenzbereich wird deshalb eine ausreichende Anzahl von Nullen an die Datensätze angehängt. Die Kreuzkorrelationsfunktion wird für alle τ berechnet, für die diese einen Wert ungleich 0 haben kann, d. h. für die noch eine Überlappung der beiden Signale vorliegt. Sind beide Signale gleichlang, dann befindet sich der Wert τ = 0 immer genau in der Mitte der X-Datenreihe.

Verfügbarkeit

FlexPro Standard, Professional, Developer Suite

Beispiele

 
Dim digital1 = 0#50
digital1[ValuesAboveLevel(Noise(digital1, NOISE_UNIFORM), 0, EVENT_INDEX)] = 1
Dim digital2 = 0#50
digital2[ValuesAboveLevel(Noise(digital2, NOISE_UNIFORM), 0, EVENT_INDEX)] = 1
Dim d1 = 0#7 : digital1[0,-8]
Dim d2 = 0#11 : digital2[0,-12]
GlobalMaximum(CCF(digital1, d1 + d2, CORRELATIONPRODUCT_CIRCULAR)) // = 7
GlobalMaximum(CCF(digital2, d1 + d2, CORRELATIONPRODUCT_CIRCULAR)) // = 11
 

In diesem Beispiel wird demonstriert, wie mithilfe der CCF-Funktion die Zeitverzögerung zwischen Sende- und Empfangssignal ermittelt werden kann. Das Empfangssignal ist dabei die Summe aus zwei Digitalsignalen mit unterschiedlichen Zeitverzögerungen.

Die Position, an der beim zirkulären Kreuzkorrelationsprodukt zwischen Sende- und Empfangssignal das Maximum auftritt, entspricht der Zeitverzögerung des Sendesignals.

Siehe auch

ACF-Funktion

Convolution-Funktion

Analyseobjekt Korrelation

Literatur

 [1] "Oppenheim, A. V. and Schafer, R. W.": "Discrete-Time Signal Processing, 2nd Edition", Seite 743 - 48. "Prentice Hall, New Jersey", 1999. ISBN 0-13-754920-2.

[2] "H. D. Lüke": "Signalübertragung", Seite 79 - 81. "Springer-Verlag Berlin, Heidelberg, New York", 1985. ISBN 3-540-15526-0.

Share article or send as email:

You might be interested in these articles