Verfasst am: 13.02.2014, 10:59
Titel: Grössere Time series syncronisieren
Hallo miteinander,
Ich bin an der Verarbeitung von Messdaten.
Aus einer Reihe von Messkanälen möchte ich gerne zwei miteinander vergleichen. Die Messsoftware liefert mir pro Messung einen Zeitvektor, sowie die Kanäle als einzelne Vektoren.
Ich habe 15 Messungen mit je 152043 Samples in eine "Time Series" (TS) gepackt, so dass die Zeitvektoren synchron sind. Aufgrund der Natur des Expriments liegen die Kurven nun zeitlich versetzt zu einander.
Diesen versatz habe ich zuvor schon bestimmt und als Event der TS angefügt.
(Im angehängten Bild habe ich nur 3 plotten lassen damit es übersichtlich bleibt)
Wie kann ich nun die einzelnen Messungen untereinander miteinander synchronisieren?
"synchronisieren" würde ich so deuten: Zeitversatz bestimmen und dann die versetzten Kurven betrachten. Du schreibst aber, dass du den Zeitversatz schon kennst - wo liegt dann das Problem?
Falls du mit "synchronisieren" etwas anderes meinst, dann bitte eine nähere Erklärung geben.
Das Problem liegt daran dass ich nicht weiss wie ich in einer TS die Kurven gegeneinander verschieben kann dass sie aufeinander liegen. Bei einem Vektor mit verschiedenen Einträgen würde ich einfach mittels circshift die Sache für jede Kurve individuel regeln.
Aber ich hatte gehofft dass das in einer TS etwas eleganter zu lösen ist...
Das get aber nicht, weil dann die Zeitvektoren anders sind und Matlab motzt:
"The time vector of the time series you are adding must match the tscollection time vector"
(Tie tscoll hat anscheinend einen eigenen Zeitvektor, was ich aber als sinnlos erachte, da ja jede TS ihren eigenen Zeitvektor in die Collection bringt)
Dann probierte ich noch eine multidimensionale TS:
Code:
Measurement=timeseries;
for i=1:NumFiles
[data]=einlesefunktion_Binary_files(fullfile(dir, filename{i}));
if i==1
Shift_zero=data.NLmax.time;
end
Measurement(i).DataInfo.Units = data.channel_unit';
Measurement(i).Time=data.time;
Measurement(i).Time=Measurement(i).Time-(Shift_zero-data.event.time);
Measurement(i).Data(:,1)=data.channel1_filtered;
Measurement(i).Data(:,2)=data.channel2_filtered;
Measurement(i).UserData=data.filename(1:10);
end
Das mache ich genau so und werde es für den Moment auch weiterhin so handhaben.
Vielleicht unternehme ich dann noch einmal einen Versuch mit TS zu arbeiten.
Besten Dank und schöne Grüsse,
Dresi
Einstellungen und Berechtigungen
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
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.