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

Grössere Time series syncronisieren

 

dresi
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 13.02.2014, 10:59     Titel: Grössere Time series syncronisieren
  Antworten mit Zitat      
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?

Gruss,
dresi

Test1.jpg
 Beschreibung:

Download
 Dateiname:  Test1.jpg
 Dateigröße:  21.53 KB
 Heruntergeladen:  593 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.02.2014, 21:47     Titel:
  Antworten mit Zitat      
Hallo,

"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.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
dresi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 17.02.2014, 12:05     Titel:
  Antworten mit Zitat      
Hallo Harald,
Danke für deine Antwort.

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...

Gruss,
Dresi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.02.2014, 20:03     Titel:
  Antworten mit Zitat      
Hallo,

ich würde die Zeitkomponente verschieben, z.B.
Code:
b = timeseries(rand(1,5), 1:5)
b.Time = b.Time - 2


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
dresi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 19.02.2014, 10:55     Titel:
  Antworten mit Zitat      
Es scheint dass ich die TS überhaupt nicht verstehe, was ist die Idee dahinter?

Ich habe folgendes probiert:
Für jede Messung eine TS zu machen und diese dann in einer tscollection zusammenzufassen:

Code:
for i=1:NumFiles
    [data]=einlesefunktion_Binary_files(fullfile(dir, filename{i}));
    [Series_name, Measurement_name]=strtok(data.filename(1:10),'-');
    Measurement=timeseries(Measurement_name(2:end));
    if i==1
        Shift_zero=data.event.time;
    end
    Measurement.DataInfo.Units = data.channel_unit';
    Measurement.Time=data.time;
    Measurement.Time=Measurement.Time-(Shift_zero-data.NLmax.time);
    Measurement.Data(:,1)=data.channel1_filtered;
    Measurement.Data(:,2)=data.channel2_filtered;
    e1=tsdata.event('event name', data.event.time);
    Measurement = addevent(Measurement, e1);
    if i==1
        Meas_series=tscollection(Measurement, 'Name',Series_name);
    else
        Meas_series=addts(Meas_series,Measurement);
    end
    clear Measurement
end


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
 


Aber wie würde man hier den Mittelwert über die 10 Messungen machen?
weil folgendes geht ja nicht:

Code:
average_channel1=mean(Measurement.Data(:,1),2); ??
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2014, 20:10     Titel:
  Antworten mit Zitat      
Hallo,

ich persönlich arbeite selten mit Timeseries-Objekten. Daher bräuchte ich wenn schon reproduzierbaren Code, um damit etwas anfangen zu können.

Meine Präferenz ist, mit Zeit- und Signalvektoren zu arbeiten (bei mehreren Signalen z.B. gesammelt als Table).

Vielleicht ist es hier am besten, den Technischen Support von MathWorks zu kontaktieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
dresi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 02.01.09
Wohnort: Zürich
Version: ---
     Beitrag Verfasst am: 20.02.2014, 06:53     Titel:
  Antworten mit Zitat      
Hallo Harald,

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
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.