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

Time alignment

 

Lisa_88
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 18.12.2017, 14:37     Titel: Time alignment
  Antworten mit Zitat      
Ich hätte eine Frage bezüglich Data Alignment. Und zwar habe ich zwei Datensätze mit unterschiedlichen Zeitpunkten. Datensatz A, hier wurden Daten im 1 Minuten-Intervall aufgezeichnet und Datensatz B, im 15 Minuten-Intervall. Ich würde gerne den Datensatz B zum Datensatz A alignen, und bis zum nächsten Zeitpunkt des Datensatzes B NaN-Values einfügen. Ich habe die knnsearch-Funktion eingesetzt und mich auch bereits herumgespielt, aber ich weiß leider nicht wie ich die NaN-Values dazwischen einfügen kann.

Danke für eure Hilfe.

LG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2017, 15:25     Titel:
  Antworten mit Zitat      
Hallo,

wenn du R2016b oder neuer hast, würde ich timetable und synchronize empfehlen.

Falls du eine ältere Version verwendest: welche?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 19.12.2017, 12:03     Titel:
  Antworten mit Zitat      
Hallo,

danke für deine Antwort. Ich habe versucht diese zwei Funktionen eingesetzt, aber ich schaffe es trotzdem nicht die jeweiligen leeren Zeilen mit NaN zu ersetzen. Ich muss auch sagen ich bin ein Neuling was Matlab angeht.

Danke.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.12.2017, 14:19     Titel:
  Antworten mit Zitat      
Hallo,

poste bitte, was du genau versucht hast. Am besten einschließlich eines Datenausschnitts.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 20.12.2017, 15:04     Titel:
  Antworten mit Zitat      
Hallo,

ich habe bis jetzt die Daten als Tabelle importiert:

Code:

%% Import data

importfrequent=importdata('DatasetA_1.xlsx');   %imports data which is more frequent
importnonfrequent=importdata('DatasetA_2.xlsx');    %imports data which is less frequent
                           
data_frequent=importfrequent.data;
data_nonfrequent=importnonfrequent.data;

%%Alignement
Alignment=knnsearch(data_frequent(:,1),data_nonfrequent(:,1));
 


Daten sehen so aus:
Habe mehrere Excel-files, welche Daten enthalten die zu unterschiedlichen Zeitpunkten aufgezeichnet wurden. Ich möchte diese unterschiedlichen Daten zu einem File vereinen. Ich hätte damit angefangen die Zeitreihe zu nehmen, welche das kürzeste Zeitintervall anzeigt (hier 1 Minute) und hätte hierzu die Daten mit einem größeren Zeitintervall (2 Stunden) dazualigned. Dort wo nichts gemessen wurde würde ich gerne NaN einfügen. Hier ein Beispiel:

Time[min] Data A Data B
0 70 300
1 80 NaN
2 82 NaN
3 85 NaN
…
60 90 305
...

Vielen Dank.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.12.2017, 15:15     Titel:
  Antworten mit Zitat      
Hallo,

am besten ist es, wenn du die Daten als Tables importierst ( readtable , siehe dein anderer Beitrag) und dann mit table2timetable in einen Timetable umwandelst. Dann kannst du die Funktion synchronize verwenden, die dir dann automatisch einen Table in der gewünschten Form erzeugt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 10.01.2018, 12:38     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für deine Hilfe. Ich versuche nun die Tabellen in table2timetable umzuwandeln. Bei dem einen Datensatz klappt das ganz gut, beim anderem bekomme ich leider immer einen Error. Hier der Code:

%% Import Data

Datafreq = readtable (Datafreq.xlsx');
Datanfreq = readtable ('Datanfreq.xlsx');

%% Time table

T_freq = table2timetable(Datafreq);
T_nfreq = table2timetable(Datanfreq);

Error:
Input table must contain datetime or duration vector for row times.

Bei den Daten Datanfreq ist die erste Spalte die Zeitangabe in Stunden und beim anderem File habe ich als erste Spalte Datum und Zeit.

Danke.

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2018, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

dann poste doch bitte den Datensatz, bei dem es nicht klappt, bzw. einen Ausschnitt davon.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 10.01.2018, 12:49     Titel:
  Antworten mit Zitat      
Hey,

hier ein Teil der Daten. Sind zwei Spalten (Zeit und Absorbance).

[list=][/list]
Time [h] Abs
0 3500
24.33 4756
34.25 8967
70.69 100024
84.7 126305

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wie die Fehlermeldung sagt: in duration umwandeln. Etwa so:

Code:
data = readtable(...)
data.Time = duration(data.Time, 0, 0)
TT = table2timetable(data)


Grüße,
Harald

Zuletzt bearbeitet von Harald am 10.01.2018, 14:45, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa_88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 10.01.2018, 13:55     Titel:
  Antworten mit Zitat      
Dankeschön, mein Fehler.

Darf ich dich fragen wofür die 0 stehen? Sollen den startzeitpunkt darstellen?

Erhalte nämlich wieder den nächsten Fehler:

Datanfreq.Time = duration(Datanfreq.Time 0, 0);
Datanfreq.Time = duration(Datanfreq.Time 0, 0);

Error: Unexpected MATLAB expression.

Danke nochmals.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2018, 14:45     Titel:
  Antworten mit Zitat      
Hallo,

im Befehl fehlte ein Komma. Ich korrigier das oben.
Die Nullstellen stehen für 0 Minuten und 0 Sekunden, siehe auch Doku von duration .

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 10.01.2018, 15:48     Titel:
  Antworten mit Zitat      
Hey,

vielen lieben Dank, ich war mir nicht sicher. Hab das auch ausprobiert aber hatte noch einen anderen Fehler drinnen Smile.

Also bis jetzt läuft alles super und habe auch die synchronize funktion angewendet. Leider bin hier auch auf ein kleines Problem getreten. Und zwar habe ich folgenden Code verwendet:

Aligned = synchronize (Time_freq, Time_nfreq, 'minutely');

Leider passen die Werte nicht überein. Er zeigt mir nicht zum Zeitpunkt wo frequent Daten vorhanden sind die nicht-frequent Daten an. Nur der erste 0.Nullpunkt passt überein.

Könntest du mir bitte hier auch noch kurz helfen?

Vielen lieben Dank.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2018, 15:54     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Könntest du mir bitte hier auch noch kurz helfen?

An sich gerne, aber dazu bräuchte ich ein reproduzierbares Beispiel (Code + Daten). Bitte die Daten dann auch wirklich so, wie du sie hast (anscheinend Excel). Im Zweifelsfall zippen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.12.17
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 11.01.2018, 11:19     Titel:
  Antworten mit Zitat      
Hallo,

danke dir. Hier zuerst der Code:

%% Import Data

Datafreq = readtable ('Datafreq.xlsx');
Datanfreq = readtable ('Datanfreq.xlsx');

%% Time table

Datafreq.Time_h = duration(Datafreq.Time_h, 0,0);
Datanfreq.Time_h = duration(Datanfreq.Time_h, 0,0);
Time_freq = table2timetable(Datafreq);
Time_nfreq = table2timetable(Datanfreq);

Aligned = synchronize (Time_freq, Time_nfreq, 'minutely');

Und ich habe einen Teil der Daten angehängt.

Danke nochmals.

LG

Data.zip
 Beschreibung:

Download
 Dateiname:  Data.zip
 Dateigröße:  171.93 KB
 Heruntergeladen:  286 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.