www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Uni-Sonstiges" - Kreuzkorrelation
Kreuzkorrelation < Sonstiges < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Kreuzkorrelation: Kreuzkorrelation mit MAtlab
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 10:31 Fr 11.03.2005
Autor: pimbolie1979

Hi @ all

ich habe eine Kreuzkorrelation mit matlab durchgeführt. Dabei benutze ich eine Signal, deren Werte ich aus einer Textdatei auslese. Ingesamt besteht dieses Signal aus 2000 diskreten Werten. Das Muster, das über das Signal laufen soll habe ich in einer zweiten Textdatei gespeichert. Die Länge des Musters beträgt 200 diskrete Werte und ist ein Bereich aus dem Signal. So wie ich die Kreuzkorrelation verstanden habe, wird das Muster über das Signal gelegt und Punkt für Punkt miteinander multipliziert. Anschließend wird aus den Produkten die Summe gebildet und danach das Signal oder das Muster um einen diskreten Wert verschoben und danach erneut die Summe der Produkte gebildet. Jedoch verstehe ich das Ergebnis nicht, das Matlab mir liefert (habe die Funktion xcorr(x1,x2) benutzt, wobei x1 das Signal und x2 das Muster ist). Denn das Ergebnis besteht mit aus 4000 diskreten Summen. Wie kommt denn diese Anzahl zustande?  Nach meiner Meinung muss das Maximum der Kreuzkorrelationsfunktion an der Stelle 500 liegen, warum leigt es jetzt an der Stelle 2500 und wieso geschieht schon an der Stelle 1800 etwas?

Die Kreuzkorrelation habe ich auf meiner Homepage dargestelllt.
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
www.gastgeber-deutschland.de

Dateianhänge:
Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
        
Bezug
Kreuzkorrelation: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 11:53 Mo 22.10.2007
Autor: Pinsel

Hallo zusammen,

ich habe das gleiche Problem wie pimbolie1979, leider wurde hier nichts mehr berichtet.

Zu meinem Vorhaben.
Ich will von 2 Sensoren Messwerte einlesen. Die Messwerte sollen dann in Matlab mit Korrelation auf Ähnlichkeit überprüft werden.

Für Testzwecke habe ich nun ein Signal1 mit 1000 Werten und ein Signal2 mit 100 Messwerten (Signal2 ist ein Ausschnitt aus Signal1) in Matlab angelegt.
Nachem ich den Befehl xcorr(Signal1, Signal2) ausgeführt habe bekomme ich das gleiche Ergebnis wie pimbolie1979.

Bin in Matlab leider nicht so tief drin.
Es gibt noch einige andere Korrelationsbefehle. Ist xcorr prinzipiell für mich der richtige?

Wenn ja, was mache ich falsch?

Am Anfang blieb die Korrelationsfunktion auf 0, aber warum fällt sie zum Schluss nicht wieder auf 0 zurück nachdem Signal2 an seinem "Abbild" aus Signal1 vorbeigelaufen ist?

Hoffe jemand kann mir helfen.

MFG


Bezug
                
Bezug
Kreuzkorrelation: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:20 Mi 24.10.2007
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
Kreuzkorrelation: woran es liegen könnte
Status: (Antwort) fertig Status 
Datum: 07:18 So 13.03.2005
Autor: marthasmith

Hallo,

ich habe mir mit 'help xcorr' mal angeguckt, was Matlab dazu sagt:

XCORR Cross-correlation function estimates.
    C = XCORR(A,B), where A and B are length M vectors (M>1), returns
    the length 2*M-1 cross-correlation sequence C. If A and B are of
    different length, the shortest one is zero-padded.  C will be a
    row vector if A is a row vector, and a column vector if A is a
    column vector.

Also: Deine beiden Vektoren sind offensichtlich unterschiedlich lang, daher
wird der kürzerer zero-gepadded. Das kenne ich nicht, aber ich könnte mir vorstellen, dass einfach 0 eingefügt wird.
Dann erklärt sich auch, warum die Kreuzkorreliert länger ist als 2000 und ebenfalls warum das erwartete Maximum an einer anderen Stelle liegt.

Wenn dir das nicht weiterhilft, würde ich erstmal mit der Funktion xcorr experimentieren, indem du kurze Sequenzen nimmst, bei denen du die Kreuzkorrelierte per Hand ausrechnen kannst. Vielleicht erstmal mit gleich langen Signalen beginnen und dann unterschiedlich lange nehmen und gucken was passiert.

Falls noch Fragen sind, schreibe mal welche Erfahrungen du mit kurzen Sequenzen gemacht hast und was komisch ist. Ansonsten hilft vielleicht auch die Matlab Hilfe, in der häufig auch Beispiele sind.


Gruß

marthasmith


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]