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

Spalte mit Datum aus Excel-Tabelle einlesen

 

mia_1992
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2018, 22:03     Titel: Spalte mit Datum aus Excel-Tabelle einlesen
  Antworten mit Zitat      
Hallo zusammen, ich brauche dringend eure Hilfe Smile
Ich habe eine Excel-Tabelle von einem Experiment vorliegen mit jeweils vier Spalten und 1550 Zeilen. Die erste Spalte ist immer ein Datum in der Form dd.mm.yyyy HH:MM:SS.
Ich möchte nun eine Function schreiben wo als erstes eine Eingabe für einen Zeitraum erfolgen soll z.B. 10.04.2014 02:15:30 - 20.05.2014 12:00:00. Danach soll der eingegebene Zeitraum mit den restlichen 3 Werten aus den anderen Zeilen ausgegeben werden.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

und was hast du versucht?

Mein Vorschlag wäre:
- als Table einlesen (readtable)
- in Timetable umwandeln (table2timetable)
- Zeitraum bilden (timerange)
- Den Zeitraum als Zeilenindex in den Timetable verwenden.

Grüße,
Harald

P.S.: bitte keine Doppelposts.
Private Nachricht senden Benutzer-Profile anzeigen
 
mia_1992
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2018, 01:33     Titel:
  Antworten mit Zitat      
Als erstes habe ich diese funktion benutzt:
T = readtable(file)
beim umwandeln habe ich diese funktion benutzt:
TT = table2timetable(T)
In der Ausgabe habe ich jedoch komische Werte bekommen.
Meine einzulesende Excel ist in vier Spalten unterteilt:
1. timestamp(Datumsangabe) 2. Watt 3. Temperatur 4. Prognose.
Muss ich hier irgendwas bei der funktion angeben, dass die erste Spalte das Datum enthält?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

was heißt denn "komische Werte"?
Am einfachsten wäre es, wenn du mal einen Dateiausschnitt zur Verfügung stellst.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 09:46     Titel:
  Antworten mit Zitat      
Als erstes habe ich die Excel eingelesen (Den Aufbau der Excel-Datei ,die ich nun verwenden will habe ich hochgeladen) und dann versucht umzuwandeln:

T= readtable('file.xlsx')

TT = table2timetable(T)

disp(T);

Wenn ich mir das Zwischenergebnis hier anschauen will kommen diese sieben "komischen Werte" heraus :

25478 '10.04.2016 23:00:00' 0 1 9.7 2 08.04.2016 12:41:41

Wenn dies klappen würde dann hätte ich mir mit

TR = timerange('05-10-2016','10-04-2016');
TT2 = TT(TR,: );
den Zeitraum ausgeben lassen. Wäre das so richtig?
Vielen Dank schon mal für die Antwort im vorraus Smile

Unbenannt.JPG
 Beschreibung:

Download
 Dateiname:  Unbenannt.JPG
 Dateigröße:  25.07 KB
 Heruntergeladen:  276 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

hänge doch bitte wirklich den Ausschnitt der Datei an. Ich würde das gerne ausprobieren und habe jetzt nicht vor, das abzutippen...

Die Argumente von timerange müsstest du vertauschen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 10:33     Titel:
  Antworten mit Zitat      
Das is tbis jetzt mein Code:

T= readtable('FILE.xlsx')

TT = table2timetable(T)

TR = timerange('2016-05-05','2016-05-10');

TT2 = TT(TR,: );

disp(TT2);

+ die ersten drei Tage aus meiner Excel:
forecast_timestamp Lastgang Reell EFH / h in W Leistungsdaten Prognose [W] Leistungsdaten Reell [W]
09.04.2016 00:00 431,7068431 0 0
09.04.2016 01:00 332,2799858 0 0
09.04.2016 02:00 274,1667019 0 0
09.04.2016 03:00 258,3955453 0 0
09.04.2016 04:00 254,6813236 0 0
09.04.2016 05:00 266,4525492 0 0
09.04.2016 06:00 345,7654676 0 0
09.04.2016 07:00 550,3333694 0,082160811 1,109170946
09.04.2016 08:00 765,2439501 15,59001385 18,81140231
09.04.2016 09:00 887,4132724 44,01765439 34,84303051
09.04.2016 10:00 963,5833878 74,62255641 66,99871784
09.04.2016 11:00 1013,982519 104,1593679 65,37261846
09.04.2016 12:00 1070,381547 127,1027743 82,38675303
09.04.2016 13:00 1047,181947 137,3523355 118,2670638
09.04.2016 14:00 951,6978785 132,443227 60,23072105
09.04.2016 15:00 877,4134448 127,8011412 75,99874999
09.04.2016 16:00 864,7279492 101,0372571 72,34601728
09.04.2016 17:00 940,6123553 82,22243141 44,01080765
09.04.2016 18:00 1081,638495 59,50496722 52,29535607
09.04.2016 19:00 1168,77985 35,7399527 25,50066165
09.04.2016 20:00 1064,38165 13,53599358 7,699152645
09.04.2016 21:00 869,4707246 0,143781419 0,263599268
09.04.2016 22:00 817,8144723 0 0
09.04.2016 23:00 687,588146 0 0
10.04.2016 00:00 495,4200304 0 0
10.04.2016 01:00 365,7651228 0 0
10.04.2016 02:00 287,3664744 0 0
10.04.2016 03:00 260,3955108 0 0
10.04.2016 04:00 253,8813374 0 0
10.04.2016 05:00 254,4527561 0 0
10.04.2016 06:00 268,8525078 0 0
10.04.2016 07:00 385,4219268 0,020540203 1,393310416
10.04.2016 08:00 653,9887252 5,135050675 18,59915354
10.04.2016 09:00 937,9266873 13,98787804 51,15195146
10.04.2016 10:00 1088,095527 37,36262871 82,41756333
10.04.2016 11:00 1206,207776 51,94617263 109,1540605
10.04.2016 12:00 1221,636082 64,14705303 128,7665307
10.04.2016 13:00 991,2971958 94,99843749 139,3892389
10.04.2016 14:00 801,0147619 98,9216162 139,4782464
10.04.2016 15:00 711,6448741 95,45032195 130,485061
10.04.2016 16:00 630,9034089 85,07751958 114,4534328
10.04.2016 17:00 656,9601026 69,30264391 85,57390782
10.04.2016 18:00 808,6717728 60,0800929 54,64378592
10.04.2016 19:00 946,097975 36,29453817 26,43181751
10.04.2016 20:00 909,8128863 15,85703648 6,326382432
10.04.2016 21:00 846,1568408 0,267022635 0,171168356
10.04.2016 22:00 750,3870633 0 0
10.04.2016 23:00 552,4476187 0 0
11.04.2016 00:00 389,9932765 0 0
11.04.2016 01:00 288,1093187 0 0
11.04.2016 02:00 259,3669571 0 0
11.04.2016 03:00 252,5099324 0 0
11.04.2016 04:00 258,052694 0 0
11.04.2016 05:00 308,2232577 0 0
11.04.2016 06:00 544,276331 0 0
11.04.2016 07:00 759,8154722 0,22594223 1,728800394
11.04.2016 08:00 805,1861186 17,43863209 15,16209296
11.04.2016 09:00 796,2148447 46,01005405 54,03784994
11.04.2016 10:00 773,3580959 76,69711688 84,39626953
11.04.2016 11:00 780,3865461 106,2339284 113,1525533
11.04.2016 12:00 876,0991818 130,9437922 106,0353731
11.04.2016 13:00 853,0138655 147,4786554 132,5596215
11.04.2016 14:00 742,501485 153,4763946 135,6748856
11.04.2016 15:00 664,2171203 148,0537811 109,2362213
11.04.2016 16:00 621,8178513 132,032423 111,368979
11.04.2016 17:00 681,3596819 106,1517676 76,52252516
11.04.2016 18:00 848,328232 78,27871249 28,85556143
11.04.2016 19:00 1006,954069 46,89328276 7,319158895
11.04.2016 20:00 984,3258874 18,54780304 0,215672128
11.04.2016 21:00 913,4128242 0,349183446 0
11.04.2016 22:00 794,7862979 0 0
11.04.2016 23:00 587,0755931 0 0
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

hänge bitte die Datei als Excel-Datei an.
Die Formatierung der Zellen in Excel kann einen Einfluss darauf haben, wie das in MATLAB importiert wird.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 11:30     Titel:
  Antworten mit Zitat      
Hiervon das Blatt Prognose Teil 2 .
Danke für die Bemühungen Smile

File (2).xls
 Beschreibung:

Download
 Dateiname:  File (2).xls
 Dateigröße:  3.47 MB
 Heruntergeladen:  453 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich weiß nicht, was MATLAB standardmäßig ausgelesen hat, aber es war nicht das richtige Blatt. So klappt's bei mir:

Code:
T = readtable('file.xls', 'Sheet', 'Prognose Teil 2') ;
TT = table2timetable(T) ;
TR = timerange('2016-05-05','2016-05-10');
TT2 = TT(TR,: );


Mir fällt auf, dass in deinem Code .xlsx steht, die Datei aber .xls ist. Leider kann auch sowas einen Unterschied machen. Ansonsten noch die MATLAB-Version --- ich habe R2017b verwendet.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 11:59     Titel:
  Antworten mit Zitat      
Super jetzt klappt es vielen Dank dafür Smile
Eine letzte Frage habe ich dazu noch ^^
Gibt es jetzt noch eine Möglichkeit die ganzen Daten aus den Zeilen in einem Array zu speichern damit ich damit weitere Berechnungen durchführen kann?
Am Ende sollte das ungefähr so aussehen: nData=size(A,1) wobei dann A den ausgewählten Zeitbereich hat den wir vorher ausgewählt haben Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Gibt es jetzt noch eine Möglichkeit die ganzen Daten aus den Zeilen in einem Array zu speichern damit ich damit weitere Berechnungen durchführen kann?

table2array dürfte helfen. Falls nicht, bitte genauer erklären, was du da meinst.

Zitat:
Am Ende sollte das ungefähr so aussehen: nData=size(A,1) wobei dann A den ausgewählten Zeitbereich hat den wir vorher ausgewählt haben

Wenn's dir nur darum geht: height(TT2) ?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 13:54     Titel:
  Antworten mit Zitat      
Super danke ich habe table2array bei mir eingebaut.
Ich habe jetzt noch zu Beginn einen Input für die Zeitangaben eingebaut damit die Funktion noch ein wenig benutzerfreundlicher wird. Jedoch übernimmt die funktion die gegeben Werte leider nicht. MATLab gibt mir diese Meldung aus:
Error in Untitled (line 10)
TR = timerange('x''y');

Hier einmal mein vollständiges Programm bis jetzt:
%Eingabe: Anfangsdatum (Bsp: 2016-05-05)
x=input('Bitte geben sie das Anfangsdatum ein: ','s');
%Eingabe: Endwert des Zeitraums (Bsp: 2016-05-10)
y=input('Bitte geben Sie das Ende des Zeitraums an: ','s');
%Daten werden in eine Table eingelesen
T = readtable('File).xls', 'Sheet', 'Prognose Teil 2') ;
%Tabelle wird in Timetable umgewandelt
TT = table2timetable(T) ;
%Auswahl des Zeitraums der Daten
TR = timerange('x''y');
TT2 = TT(TR,: );
%Tabelle in Array speichern
A = table2array(TT2)
%Anweisung (Daten gültig=Rechnung beginnt/Daten ungültig=Fehlermeldung)
if isempty(A)

disp('DIE EINGEGEBENEN DATEN SIND NICHT VORHANDEN')
else
disp('DIE RECHNUNG BEGINNT')
end

%A kann für die Rechnung weiterverwendet werden
disp(A);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das sollte so aussehen:
Code:
TR = timerange(x, y);


Du willst ja die Variablen x und y nutzen, nicht die Zeichenketten, die nur aus diesem einen Buchstaben bestehen.

Bitte in Zukunft bei Fehlermeldungen die komplette Meldung angeben und die Code-Umgebung verwenden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 14:50     Titel:
  Antworten mit Zitat      
Perfekt jetzt funktioniert es. Vielen Dank für die ganze Hilfe und Bemühungen
das hat mir echt weitergeholfen Smile
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.