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

Uhrzeit und Datum beim Einlesen von Excel

 

kook_20
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2013, 14:45     Titel: Uhrzeit und Datum beim Einlesen von Excel
  Antworten mit Zitat      
Hallo,

ich habe mich gerade in dem Forum angemeldet, jedoch schau ich schon seit einigen Tagen nach einer Lösung für mein Problem, bin jedoch nicht fündig geworden. Ich bin auch Matlab- Anfänger und ich denke, es handelt sich nur um ein "kleineres Problem".

Ich habe diverse Messwerte, die über eine bestimmte Zeit mit Datum (in einer Spalte) und die Uhrzeit nochmal als nächste Spalte welches in einer Spalte angelegt wird, in Matlab einlesen. Die Formatierung in Excel sieht folgendermaßen aus (26.03.2012 00:10:00). Ich beziehe meine Daten aus 2 Registerkarten in Excel.
Ich hab die benötigten Daten aus Excel mit dem Befehl
Code:
[daten_1,txt_1]=xlsread('test.xls',1,A1:BS2000)
eingelesen. daten_2 und txt_2 und daten_3,txt_3 habe ich analog gemacht. Als nächstes habe ich meine Variablen deklariert und mit den ausgelesenen Messwerten belegt. Nun schreibe ich meine geordneten Daten mit Uhrzeit und Datum in eine neue Exceldatei. Das klappt soweit auch ganz gut. Jedoch passt das Datum und die Uhrzeit nicht.
Untenstehend habe ich den Code bis zum Deklarieren der Variablen von Uhrzeit und Datum gepostet. Als Anhang habe ich einen Ausschnitt von der Excel-Datein gemacht.

Code:
clear all;
clc;

%% Einlesen der Daten aus erster Registerkarte aus Excel

[daten_1, txt_1] = xlsread('test.xls',1,'A1:BS1009');  

%% Einlesen der Daten aus zweiter Registerkarte aus Excel

[daten_2, txt_2] = xlsread('test.xls',2,'Q1:X1009');  
[daten_3,txt_3]=xlsread('test.xls',2,'AG1:AV1009');

%% Umwandeln der 2ten Spalte in Uhrzeit
Uhrzeit=datenum(txt_1(2:end, 2), 'HH:MM:SS');

%% Umwandeln der 1 Spalte in Datum
Datum=datenum(txt_1(2:end,1), 'dd.mm.yyyy');
 


Vielen Dank schon mal für die Bemühungen.

test.xls
 Beschreibung:

Download
 Dateiname:  test.xls
 Dateigröße:  13.5 KB
 Heruntergeladen:  676 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

es hilft immer ungemein, wenn "passt nicht" genauer präzisiert wird.

Am Datum kann ich keine Probleme feststellen. Die Uhrzeit ist in den numerischen Daten gelandet, auch hier sehe ich keine Probleme.

Solche Probleme können auch versionsabhängig sein, bitte also möglichst auch die verwendete MATLAB-Version angeben.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 10:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

erstmal vielen Dank für deine Antwort. Das Problem lag nicht an dem Code, sondern an der Formatierung in der Exceldatei, da diese unterschiedlich ist. Ich habe einen neuen Weg gefunden und erstelle mir das Datum mit Uhrzeit selber.
Code:
Anfangswert=734954+0/24;
Endwert=734960+24/24;
Schrittweite=1/24;


for Datum=Anfangswert:Schrittweite:Endwert
        datestr(Datum,'dd.mm.yyyy HH:MM')
end


Mit dem Befehl datestr() wandel ich mir das Datum um. Das klappt soweit super. Jetzt kommt dazu meine Frage. Ich habe einen einen Vektor erstellt
Code:
m=1008;
n=1;
Vektor=zeros(m,n);
mit 1008 Zeilen und 1 Spalte. Ich möchte nun das Datum in die Zeilen schreiben, bekomme dieses jedoch nicht ganz hin.

Untenstehend habe ich meinen aktuellen Code geschrieben.

Code:
for k=1:m
    for Datum=Anfangswert:Schrittweite:Endwert
        datestr(Datum,'dd.mm.yyyy HH:MM');
        Vektor(k,1)=Datum;
        k=k+1;
    end
end


Das Datum wird generiert und dann in den Vektor überführt. Wenn man
Code:
datestr(Vektor,'dd.mm.yyyy HH:MM')
schreibt, dann sieht man, dass die Formatierung nicht passt und erst später aufgefüllt wird. Dabei wird mein Vektor nicht 1008 Zeilen lang, wie ich es zuvor beschrieben habe, sondern 1176. Ich denke, es ist nur ein kleiner Fehler, jedoch komme ich nicht drauf und hoffe auf eure Hilfe.

Vielen Dank im Voraus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.03.2013, 11:52     Titel:
  Antworten mit Zitat      
Hallo,

ich habe an der Formatierung der Excel-Datei nichts geändert. Mir ist auch nicht klar, von was sie sich nun wie unterscheiden soll.

Ich weiß zwar nicht, was du erreichen willst, aber du machst es viel zu kompliziert. Folgendes liefert alle drei sinnvollen Repräsentationen für die Datumsangaben.
Code:
DatumNum=Anfangswert:Schrittweite:Endwert;
DatumStr=datestr(DatumNum, 'dd.mm.yyyy HH:MM');
DatumCell=cellstr(DatumStr);


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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 12:41     Titel:
  Antworten mit Zitat      
Hallo Harald,

die Exceldatei ist nur ein Beispiel. Ich kann die Daten nicht veröffentlichen, da es sich um eine Abschlussarbeit handelt und diese der Geheimhaltung unterliegt.
Ich möchte das von mir angelegte Datum in den Spaltenvektor reinschreiben.
Das Programm habe ich jetzt nur für das Datum abgespielt
Code:
Anfangswert=734954+0/24;
Endwert=734960+24/24;
Schrittweite=1/24;


for Datum=Anfangswert:Schrittweite:Endwert
        datestr(Datum,'dd.mm.yyyy HH:MM')
end


Im Command Window liefert es mir die folgenden Werte:

ans =

26.03.2012 00:00


ans =

26.03.2012 01:00


ans =

26.03.2012 02:00


ans =

26.03.2012 03:00


ans =

26.03.2012 04:00


ans =

26.03.2012 05:00
...

ans =

02.04.2012 00:00

Das passt auch, jedoch möchte ich diese Daten in einen Vektor mit 1008 Zeilen reinschreiben lassen, sodass jede Zeile im Vektor belegt ist. Angefangen von 26.03.2012 00:00 für die 1 Zeile und 02.04.2012 00:00 für die letzte Zeile (Zeile 1008).

Sorry, aber weiss nicht mehr, wie ich es anders erklären soll.
Hoffe es ist verständlicher,
Gruß Dirk
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

hast du denn mal den von mir zur Verfügung gestellten Code ausgeführt?

Wie sollen 169 Werte auf 1008 Zeilen verteilt werden?

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 13:13     Titel:
  Antworten mit Zitat      
Ich hab grad einen gravierenden Fehler gefunden, da mir das Datum mit Uhrzeit nicht im Stundentakt angezeigt werden soll, sondern im 10 Minutentakt. Werde das nochmal überarbeiten und mich bei weiteren Fragen melden... Ich denke, dass ist der Grund, warum die beiden Schleifen nicht wie gewünscht funktionieren.

Trotzdem vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das einzige was du dazu überarbeiten musst:
Code:
Schrittweite=1/(6*24);

Dann wirst du 1009 Werte bekommen, außer du lässt Mitternacht am letzten Tag weg:
Code:
Endwert=734960+23/24;


Warum bestehst du auf dieser Schleife, wenn dasselbe auch ohne Schleife in 1-2 Zeilen möglich ist? Die Empfehlung, den von mir geposteten Code zu versuchen, besteht weiterhin.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 14:27     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe den von dir geposteten Code probiert. Ich möchte die Werte dann über das Datum, welches über die x-Achse angezeigt wird, plotten. Deswegen wollte ich es über einen Vektor machen, wo ich zuvor die erstellten Datumswerte eingelesen habe.

Code:
[ax,h1,h2]=plotyy(Vektor,ET01,Vektor,F1AA1,'plot');
datetick('x','dd.mm.yyyy HH:MM');
hold on;
h3=plot(ax(1),Vektor,F1AT1,'r');

set(get(ax(1),'ylabel'),'String','Temperatur [°C]');
set(get(ax(2),'ylabel'),'String','Strömungsgeschwindigkeit [m/s]');

set(ax(2),'XTICK',[]);
legend('ET01','F1AT1','F1AA1');

xlabel('Datum');
title ('Temperaturverlauf des Messfühlers F1AT1 gegenüber Aussentemperatur ET01 und Strömungsgeschwindigkeit F1AA1 im Rohr an einem Tag');


So sieht mein Code aus, funktioniert auch, wenn ich den Vektor belegt habe. Jedoch klappt das Einlesen des Vektors nicht.
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: 29.03.2013, 15:49     Titel:
  Antworten mit Zitat      
Hallo kook_20,

Bitte erkläre die auftretenden Probleme mit mehr Details als "klappt nicht". Eine Hilfe ist viel einfacher, wenn man nicht zunächst das Problem erraten muss. Und für Dich ist das Problem ja bereits offensichtlich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.03.2013, 16:07     Titel:
  Antworten mit Zitat      
Hallo,

super, und was hält dich nun davon ab, diesen Code auch zu verwenden?
Code:
Vektor=Anfangswert:Schrittweite:Endwert;

Dann plotten, wie von dir gepostet, und dann
Code:

für eine vernünftige Formatierung der x-Achse.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 17:53     Titel:
  Antworten mit Zitat      
Hallo,

so ich habe jetzt den code von harald genommen und bei mir die anderen Sachen rausgeworfen. Wenn ich wie bei dir vorgeschlagen, den letzten Wert am letzten Tag weglasse, also Endwert=734960+23/24; eingebe, dann meckert er, da mein Vektor nicht dieselbe Länge hat. Im Workspace seh ich 1003x1. Ich brauche jedoch 1008.
Wenn ich den Endwert wie gelasse poste, dann lieg ich bei 1009x1.

Deswegen wollte ich die ganze Geschichte über einen Vektor machen, wo ich meine generierten Werte mittels Schleife einschreiben lasse und den Vektor vorher mit Vektor=zeros(m,n) belege und m=10008 und n=1 schreibe.


Gruß, Dirk
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.03.2013, 18:34     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Im Workspace seh ich 1003x1. Ich brauche jedoch 1008.

Dann überleg doch mal, woran das liegt. Wenn du bei Endwert 23/24 addierst, hören die Daten um 23:00 auf, sie sollen aber wohl um 23:50 aufhören. Wie musst du also die 23/24 abändern, damit es passt?

Zitat:
Deswegen wollte ich die ganze Geschichte über einen Vektor machen

Die Idee lässt dich nicht los, hm? Dabei ist es nur eine minimale Anpassung, die du vornehmen musst.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 10:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich hab den Fehler gefunden.
Code:
Anfangswert=734954+0/144;
Endwert=734960+143/144;
Schrittweite=1/144;


Vektor=Anfangswert:Schrittweite:Endwert;
DatumStr=datestr(Vektor, 'dd.mm.yyyy HH:MM');
DatumCell=cellstr(DatumStr);
 


Hab jetzt endlich die x-Achse mit der Datumsangabe. Werde jetzt die Skalierung noch ändern. Danke schon mal für deine/eure Bemühungen.

Wird bestimmt nicht meine letzte Frage sein.

Viele Grüße und schöne Ostern,
Dirk
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.