Wenn ich 2 Datensätze a
und b
(jeweils 73 Punkte lang) in MATLAB korreliere und grafisch darstelle, erscheint es wie ein Dreieck mit 145 Punkten. Ich bin verwirrt zwischen dem Korrelationskoeffizienten und dem Dreieck-ähnlichen Graphen, wenn ich die Kreuzkorrelationsausgabe grafisch darstelle, die von +/- 1 reicht.
Ich glaube ernsthaft, dass Sie mehr über Kreuzkorrelationsfunktionen & amp; Korrelationskoeffizient aus einem Statistikbuch, da Ihre Verwirrung hier grundlegender ist als bei MATLAB. Wenn Sie nicht wissen, womit Sie es zu tun haben, können Sie nicht verstehen, was MATLAB Ihnen gibt, selbst wenn Sie das Programm richtig machen.
Hier sehen Sie, was Sie in einer Kreuzkorrelation tun. Betrachten Sie die Daten A
und B
wie folgt
Sie nehmen dann B
und schieben es bis zum Ende, so dass der letzte Punkt von B
und der erste Punkt von A
ausgerichtet sind:
Sie geben Nullen ein, wo auch immer die Daten nicht existieren, dh in diesem Fall B
über 0 und A
vor 0. Dann multiplizieren Sie sie punktweise und fügen hinzu, geben 0 + 0 + 3 + 0 + 0 + 0 = 3
als Ihren ersten Punkt an die Kreuzkorrelation.
Dann schieben Sie B
einen Schritt nach rechts und wiederholen
Geben Sie 0 + 9 + 4 + 0 + 0 = 13
als zweiten Punkt in der Kreuzkorrelation an. Sie tun dies, bis Sie B
bis zum anderen Ende von A
schieben.
Der resultierende Vektor ist length(A)+length(B)-1
, der -1 ist, weil wir mit einer Überlappung bei 0 begonnen haben, also ist es ein Punkt weniger. Also hier sollten Sie 3 + 4 - 1=6
Punkte in der Kreuzkorrelation erhalten und in Ihrem Fall sollten Sie 73 + 73 -1 = 145
Punkte erhalten.
Wie Sie sehen können, muss der Wert des Kreuzkorrelationsvektors an keinem Punkt innerhalb von ± 1 liegen. Die Kreuzkorrelation hat ein Maximum, wenn die beiden Datenvektoren "am ähnlichsten" sind. Der "Offset" der Spitze von Null gibt einen Hinweis auf die "Verzögerung" zwischen den beiden Datensätzen.
Der Korrelationskoeffizient (ich nehme an, dass Pearson) ist eine bloße Zahl, die als
definiert ist %Vor% wobei Covariance(A,A)
besser als Variance(A)
bekannt ist. Dies ist eine Menge, die von -1
bis 1
reichen kann (warum muss sie zwischen ± 1 sein, siehe Cauchy-Schwartz-Ungleichheit )
Während Sie mit Sicherheit die Kreuzkorrelation zweier Datenvektoren mit ungleichen Datenpunkten berechnen können, können Sie ihren Korrelationskoeffizienten nicht berechnen. Der Begriff der Kovarianz ist ein Maß dafür, wie zwei Variablen / Datasets zusammen ändern und nicht für ungleiche Datensätze definiert sind.
Haben Sie gelesen, was diese Funktion zurückgibt? Ссылка
c = xcorr(x,y)
gibt die Kreuzkorrelationssequenz in einem length2*N-1
Vektor zurück, wobeix
undy
LängeN
vectors(N>1)
sind.
2*73-1=145
, so dass überprüft wird. Und die Formel direkt darunter erklärt warum.
Tags und Links math matlab cross-correlation data-analysis