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

Kreuzkorrelation?

 

Dorothee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 11:37     Titel: Kreuzkorrelation?
  Antworten mit Zitat      
Hallo,

ich bin ein absoluter Neuling in Matlab und versuche verzweifelt folgendes Problem zu lösen:

Ein Sedimentkern wurde mit zwei verschiedenen Methoden chemisch untersucht. Methode 1 lieferte sowohl x als auch y-Werte.
x1=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
]
y1=[2 2 2 2 2 2 2 4 3 4 5 6 7 6 5 4 3 4 5 6 7 6 5 4 3 4 5 2 2 2 2 2 2 2 2 2 2 2 2 2
]


Bei Methode 2 wurde in gleichmäßigen Abständen eine Probe analysiert, allerdings ist die Absoluttiefe (x-Werte) nicht bekannt.
y2=[2 2 2 2 2 3.8 4.5 6.1 7.4 5.8 4.5 4.1 3.4 3.8 4.5 6.1 7.4 5.8 4.5 4.1 3.4 3.8 4.5 6.1 7.4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
]

Theoretisch sollen die Signaverläufe (y-Werte) identisch sein.

Per Matlab möchte ich jetzt die y-Werte meiner 2.ten Messmethode nach links bzw. rechts auf der x-Achse verschieben lassen, bis meine Methoden optimal miteinander vergleichbar sind (die Differenzen der y-Werte sollen minimal sein)

Ich habe keine Ahnung, welche Matlab-Funktion mir hier am besten weiterhilft.
Optimales Ergebnis wäre, wenn mir Matlab den Vektor x2 ausgibt.

Kann mir jemand helfen?
Für jede Hilfe bin ich sehr dankbar!

Liebe Grüße
Dorothee


Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 18.08.2010, 12:22     Titel:
  Antworten mit Zitat      
Hi,

schau dir doch folgenden Befehl an:
Code:

Das ist der Befehl für die Kreuzkorrelation.

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
Dorothee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 12:34     Titel:
  Antworten mit Zitat      
Genau damit komm ich nicht voran - deshalb bin ich mir nicht sicher, ob xcorr wirklich die richtige Funktion für mich ist.

Aber vielleicht versteh ich den Code auch nicht richtig?

Das Ergebnis stellt einen Vektor von doppelter Länge -1 dar.
Wie kann ich dieses Ergebnis dazu nutzen, dass mir Matlab den gesuchten x2 Vektor berechnet?

LG Dorothee
 
Vito
Forum-Guru

Forum-Guru


Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 18.08.2010, 13:02     Titel:
  Antworten mit Zitat      
Hi,

schau mal hier nach

http://www.eal.ei.tum.de/lehre/ssm/folien_signal.pdf

Gruß,
Vito
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 18.08.2010, 13:04     Titel:
  Antworten mit Zitat      
Die Kreuzkorrelationsfunktion sollte im Prinzip klar sein, ein Vektor wird entlang eines anderen verschoben und der Funktionswert ist einfach das Integral der multiplizierten Funktionen bei einer bestimmten Verschiebung.

Ich hatte das nur kurz im Studium und es ist auch schon verdammt "lange" her, aber vll gibt dir folgender code einen kleinen Hinweis. Obs für dich das richtige ist, weiß ich natürlich nicht.

Code:


y2=[2 2 2 2 2 3.8 4.5 6.1 7.4 5.8 4.5 4.1 3.4 3.8 4.5 6.1 7.4 5.8 4.5 4.1 3.4 3.8 4.5 6.1 7.4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2];
y1=[2 2 2 2 2 2 2 4 3 4 5 6 7 6 5 4 3 4 5 6 7 6 5 4 3 4 5 2 2 2 2 2 2 2 2 2 2 2 2 2];
x1=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40];

Y=xcorr(y1,y2);
[I,ind]=max(Y); % Maximum als Indiz für die beste Übereinstimmung

ind=ind-length(y2); % Verschiebung

figure(1)

subplot(3,1,1)
plot(y1)
hold all
plot(y2)
hold off
title('Original Daten')

subplot(3,1,2)
plot(Y,'r')
title('Kreuzkorrelation')

subplot(3,1,3)
plot(y1)
hold all
plot(ind:(ind+length(y2)-1),y2)
hold off
title('Verschobene Daten')

 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dorothee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 13:09     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank Vito für Deine Antworten!
Ich werde mir das Skript mal genau anschaun und hoffe, dass es mir weiterhilft.

Falls sonst noch jemand konkrete Lösungsvorschläge hat freue ich mich weiterhin über Vorschläge!

LG Dorothee
 
Dorothee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 13:43     Titel:
  Antworten mit Zitat      
Hallo Maddy,

vielen Dank für die ausführliche Antwort.

Habe das Beispiel jetzt auf einen etwas größeren Datensatz übertragen und es scheint zu funktionieren Very Happy

Danke!

Dorothee
 
Kai_Kai

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2010, 15:19     Titel: weitere Frage
  Antworten mit Zitat      
Code:
 
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 - 2025 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.