Wenn es einen guten Grund gibt, warum Sie den eingebauten nicht verwenden können, können Sie stattdessen eine Faltung verwenden. Kreuzkorrelation ist einfach eine Faltung ohne Umkehrung. Um die Umkehrung des Korrelationsintegrals zu "rückgängig machen", können Sie zuerst eine zusätzliche Umkehrung auf eines Ihrer Signale anwenden (das sich in der Faltung aufheben wird).
Nun, yoda hat eine gute Antwort gegeben, aber ich dachte, ich erwähne das sowieso nur für den Fall. Zurückkommend auf die Definition der diskreten Kreuzkorrelation kann man sie berechnen, ohne (zu viel) eingebaute Matlab-Funktionen zu verwenden (was Matlab mit xcorr
tun sollte). Natürlich gibt es noch Raum für Verbesserungen, da ich nicht versucht habe, dies zu vektorisieren:
Dies entspricht dem Ergebnis der Funktion xcorr
.
UPDATE: vergaß zu erwähnen, dass Matlab meiner Meinung nach nicht das geeignete Werkzeug für die Echtzeit-Kreuzkorrelation großer Datensätze ist, ich würde es lieber in C oder in anderen kompilierten Sprachen ausprobieren.
Tags und Links matlab signal-processing cross-correlation