WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit Kreuzkorrelation

 

Q-Dog

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2012, 18:31     Titel: Problem mit Kreuzkorrelation
  Antworten mit Zitat      
Moin,

ich bin gerade dabei mit Matlab die Kreuzkorrelation zwischen zwei Signalen zu berechnen und bin dabei auf folgendes Problem gestoßen:

Angenommen, ich habe 2 Signale s1=sin(x) und s2=cos(x). Jetzt möchte ich anhand der Kreuzkorrelation bestimmen, um wie viel ich s2 verschieben muss, damit es möglich exakt mit s1 übereinstimmt (oder habe ich den Sinn der Kreuzkorrelation falsch verstanden?)

Code:

s = sind(0:360);
c = cosd(0:360);
cor = xcorr(s,c);
plot(cor)
 


Schaue ich mir den Plot an, so ist das Maximum der Kreuzkorrelation bei x=440. Die Mitte liegt bei x=360. Also eine Verschiebung um 440-360=80.

Wie aber jeder weiß, ist cos um 90° zu sin verschoben und nicht um 80°.

Was mache ich falsch?


Gruß Q-Dog


Habakuk Tibatong
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2012, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

damit xcorr annimmt, dass Du eine periodische Funktion hast, musst Du den Aufruf folgendermaßen machen:

Code:
cor = xcorr(s,c,'unbiased');


Das verändert auch die ganze Kreuzkorrelationsfunktion, die beim Vergleichen eines nicht gefensterten (also als unendlich periodisch angenommenen) Sinus und Cosinus auch sinusförmig sein muss.

War sie aber vorher gar nicht, da der Algorithmus die Funktionen "s" und "c" nicht wie periodische Funktionen behandelt hat.

Ich hoffe Du kannst damit jetzt noch was anfangen. Wink

Viele Grüße, Habakuk
Private Nachricht senden Benutzer-Profile anzeigen
 
Andidas
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 16.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2012, 11:10     Titel:
  Antworten mit Zitat      
Hallo Leute,

ich hab zu dieser auch eine Frage:

[c,lags2]=xcorr(y,x,20,'coeff');

Wenn ich die Option 'coeff' verwende, dann sollte doch eine Normierung auf den nullten Wert stattfinden, d.h. ich müsste doch eigentlich für Lags=0 immer den Wert 1 angezeigt bekommen. Möglicherweise hab ich das falsch verstanden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Super8film
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 13.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2013, 10:42     Titel:
  Antworten mit Zitat      
theoretisch schon z.B. bei CW
Ne er müsste nicht nicht immer das Maximum sein. Ist ein diskretes Problems sozusagen.

Gibt mehrere Methoden z.B. durch Interpolation.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.