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

Ermittlung der Laufzeitdifferenz zwischen 2 Signale

 

Zero1214
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 16:01     Titel: Ermittlung der Laufzeitdifferenz zwischen 2 Signale
  Antworten mit Zitat      
Hallo Leute,

im Rahmen eines Projektes soll die zeitlich Differenz zwischen 2 Signalen gemessen werden. Es liegt eine Platte vor, die mit einem Impulshammer in der Mitte angeregt wird, und einem Beschleunigungssensor, der auf die Auswirkung reagiert. (siehe Anhang Hammer-Sensor1.jpg)
Per Definition soll eine Messung mit der Kreuzkorrelation möglich sein. Eine Methode geht über hcorr = dsp.Crosscorrelator. Den Beispielcode habe ich folgendermaßen angepasst:

Code:

hcorr = dsp.Crosscorrelator;
t=Zeit_s;
x1=Hammer_N;
x2=Sensor1;
y=step(hcorr,x1',x2');       %computes cross-correlation of x1 and x2
figure,plot(t,x1,'b',t, x2, 'g');
legend('Input signal 1',' Input signal 2')  
figure, plot(y); title('Correlated output')

[~,Zeile] = min(abs(y-max(y)));     % in welcher Zeile liegt das Maximum?
dt=t(Zeile); % Zeitdifferenz durch Wertzuweisung der Zeile vom Zeitvektor
 

Das Ergebnis y ist im Anhang hcorr.jpg zu sehen. Mit dieser Berechnung komme ich auf eine Zeitdifferenz von 3.2197e-04 Sekunden, was zu viel ist. Ich weiß leider nicht, ob diese Variante nicht so gut für diesen Anwendungsfall geeignet ist oder ob ich einen Fehler gemacht habe.

Eine andere Berechnungsmöglichkeit soll mit dem Befehl xcorr möglich sein. Mein Code dazu:

Code:

[acor,lag] = xcorr(Sensor1,Hammer_N);
Fs = =1/(Zeit_s(6)-Zeit_s(5));
[~,I] = max(abs(acor));
lagDiff = lag(I)
timeDiff = lagDiff/Fs


wodurch sich eine ähnliche Zeitdifferenz von 3.6071e-04 Sekunden ergibt. Wenn ich jedoch den Wert von lagDiff als Zeilenwert im Zeitvektor suche, dann ergibt sich eine Zeitdifferenz von 1.3929e-04 Sekunden, der wesentlich besser aussieht. Zum Vergleich eine nähere Ansicht der 2 Signale in Hammer_Sensor1_b.

Sind meine Berechnungen und Interpretationen der Ergebnisse richtig? Ich habe mir noc viele andere Beispiele angeschaut und durchprobiert, jedoch erzielten diese beiden Varianten die besten Ergebnisse. Ich bin für jeden Hinweis dankbar.

MfG Zero

Hammer_Sensor1_b.jpg
 Beschreibung:
Ergebnis aus xcorr

Download
 Dateiname:  Hammer_Sensor1_b.jpg
 Dateigröße:  75.04 KB
 Heruntergeladen:  519 mal
xcorr.jpg
 Beschreibung:

Download
 Dateiname:  xcorr.jpg
 Dateigröße:  14.84 KB
 Heruntergeladen:  515 mal
hcorr.jpg
 Beschreibung:

Download
 Dateiname:  hcorr.jpg
 Dateigröße:  17.44 KB
 Heruntergeladen:  524 mal
Hammer_Sensor1.jpg
 Beschreibung:

Download
 Dateiname:  Hammer_Sensor1.jpg
 Dateigröße:  72.84 KB
 Heruntergeladen:  540 mal
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.