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

Datum und Uhrzeit aus Excel mit datenum umwandeln

 

HansMeiser10
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 14:45     Titel: Datum und Uhrzeit aus Excel mit datenum umwandeln
  Antworten mit Zitat      
Hallo Leute,

ich habe ein (vermutlich) kleines Problem beim Einlesen von Datum und Uhrzeit, sowie der Umwandlung in Matlab. Ich habe eine Exceltabelle die folgendermaßen aussieht:

Spalte A
Datum
06.01.2013 00:00:00
06.01.2013 00:01:00
06.01.2013 00:02:00
...

In der ersten Zeile steht also das Datum und die Uhrzeit. In weiteren Spalten Daten (für das Problem aber unwesentlich). Jetzt lese ich diese Daten mit Matlab ein:

Code:

[input,temp]=xlsread('input_test.xlsx');
temp(1,:)=[];          
time=temp(:,1);  %nur erste Zeile vom String
timestamp=datenum(time,'dd.mm.yyyy HH:MM:SS')*86400;
 


Wenn man sich jetzt den Vektor time anschaut steht da drin:
06.01.2013
06.01.2013 00:01:00
06.01.2013 00:02:00

und damit schlägt auch datenum fehl. Ich könnte jetzt bei der Umwandlung Zeile für Zeile vorgehen und prüfen, ob die Zeit nur 10 Stellen hat und dann entsprechend vorgehen, aber gibt es eine elegantere Möglichkeit? z.B. das matlab immer in dem entsprechenden Format einließt?

Vielen Dank schonmal.
Hans
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.06.2013, 15:35     Titel: Re: Datum und Uhrzeit aus Excel mit datenum umwandeln
  Antworten mit Zitat      
Hallo HansMeiser10,

Im dritten Output von XLSREAD bekommst Du die Roh-Daten. Dort finden sich entweder Strings oder Das serielle Datumsformat von Excel. Leider unterscheidet sich dies zwischen Windows PCs und Macs (Hurry Microsoft!). Auf PCs lässt es sich so umwandeln:
Code:
MatlabSerialDate = ExcelSerialDate + 693960;

Wenn das Excel-File auf einem Mac abgespeichert wurde ist es eventuell 695422.

Du könntest aber auch den Cell-String auffüllen:
Code:
short = (cellfun('length', time) == 10);
time(short) = strcat(time(short), ' 00:00:00');

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
HansMeiser10
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 15:50     Titel:
  Antworten mit Zitat      
Hi,

okay das probiere ich gleich mal aus. Die Rohdaten habe ich auch schon probiert, allerdings ist da dann ja alles enthalten. Das Datum sieht in dem Vektor allerdings genauso aus, wie im temp Vektor, nur das ich dort auch die numerischen Daten aus den anderen Spalten sehe.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
HansMeiser10
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 17:43     Titel:
  Antworten mit Zitat      
Das zweite hat super funktioniert! Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Geranie
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 27.05.13
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 21.06.2013, 11:34     Titel:
  Antworten mit Zitat      
Hey,

ich sitze gerad auch vor diesem Problem und habe es nun auch mit dem zweiten Code versucht. Leider bekomme ich immer noch eine Fehlermeldung.

Hier einmal mein modifizierter Code (ich bin mir nicht sicher, ob ich 'time' richtig ersetzt habe? Ich habe ein cell_arry namens untitled. Meine Daten stehen in Spalte 2 ab Zeile 2 bis Ende.):

Code:
short = (cellfun('length', untitled(2:end,2)) == 10);
untitled(short) = strcat(untitled(short), ' 00:00:00');
dispatchAep2013.time = datenum(untitled(2:end,2),'dd.mm.yyyy HH:MM:SS');


Folgende Fehlermeldung erhalte ich für datenum:
Zitat:
Error using datenum (line 179)
DATENUM failed.

Error in AEP2013_einlesen (line 23)
dispatchAep2013.time = datenum(untitled(2:end,2),'dd.mm.yyyy HH:MM:SS');

Caused by:
Error using dtstr2dtnummx
Failed on converting date string to date number.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.06.2013, 13:54     Titel:
  Antworten mit Zitat      
Hallo Geranie,

Um das Problem zu verstehen, müssen wir den Inhalt von "untitled" kennen. Welche Zeile wird denn von DATENUM nicht verstanden? Um dies herauszufinden kannst Du einfach in einer Schleife das Cell-Array elementweise bearbeiten lassen und die Fehler per TRY-CATCH abfangen.
Ein solches Debuggen ist oft effizienter als das Forum zu fragen, wenn die Daten lokal vorliegen, das Forum die Details aber erraten müsste.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Geranie
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 27.05.13
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 24.06.2013, 14:18     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Hilfestellung!
Ich hab das Problem nun so gelöst, in dem ich untitled(2:end,2) in die Variable "time" übergeben habe und dann den Code wie oben (im 2.Post) angewendet habe. Das hat direkt funktioniert!
Ich vermute, ich habe irgendwo einen Fehler dabei gemacht, im Code "time" durch "untitled(2:end,2)" zu ersetzen.

Beim nächsten Mal werde ich es auch nochmal mit dem Debuggen probieren, bevor ich hier nachfrage!

Besten Dank nochmal!
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 - 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.