Verfasst am: 18.06.2018, 18:13
Titel: Datum und Zeit als kumulative Stunden
Moin, ich habe momentan ein kleines Probelm, was mich aber gerade einfach Zeit kostet weil ich mich noch nicht gut genug mit Matlab auskenne. Wahrscheinlich lässt es sich einfach lösen ich weiß nur nicht wie, weshalb ich auf eure Hilfe hoffe. Momentan werden mein Zeit Daten für die Plots im Format Monat/Tag/Jahr Stunde:Minute:Sekunde manchmal auch Milisekunde angegben. Da das nur eine von insgesamt 8 Graphiken werden soll, würde ich der Vergleichbarkeit willen gerne alle Zeiten als Stunden darstellen. Aber nicht in Tagen unerteilt in 24 Stunden abschnitten sondern kumulativ. Alternativ würde ich die Zeiten auch in Excel schon im Format Stunden:Minuten:Sekunden erstellen, aber da hat das plotten nicht funktioniert da die Plot funktion nicht mit dem "Cell-Format" als Zeit arbeitet. Ich hoffe ihr könnt mir bei meinem Problem helfen und schon mal vielen Dank im Voraus.
Beste Grüße Laurenz.
A = readtable('B02.11.17.xls','Range','A3:AB172711'); % definiert die Tabelle
B = readtable('sh_high.xls','Range','A16:T1048576');
x = A {:, 1}; % Datum/Zeit
y = A {:, 2}; % Druck in bar Parr
x1 = A {:, 3}; % Datum/Zeit
y1 = A {:, 4}; % Druck in bar Wika
x2 = A {:, 5}; % Datum Zeit
y2 = A {:, 6}; % Temperatur in °C Star oddy 71
x3 = A {:, 5}; % Datum Zeit
y3 = A {:, 7}; % Druck in bar Star oddy 71
x4 = A {:, 8}; % Datum Zeit
y4 = A {:, 9}; % Temperatur in bar Star oddy 74
x5 = A {:, 8}; % Datum Zeit
y5 = A {:, 10}; % Druck in bar Star oddy 74
x6 = A {:, 11}; % Datum Zeit
y6 = A {:, 12}; % Bronckhorst Maxflow [%]
x7 = A {:, 11}; % Datum Zeit
y7 = A {:, 13}; % Bronckhorst Flow [nm3/ds]
x8 = A {:, 11}; % Datum Zeit
y8 = A {:, 14}; % Bronckhorst Cumulativ Flow [nm3]
x9 = A {:, 15}; % Datum Zeit
y9 = A {:, 16}; % Isco Pressure A
x10 = A {:, 15}; % Datum Zeit
y10 = A {:, 17}; % Isco Flowrate A
x11 = A {:, 15}; % Datum Zeit
y11 = A {:, 18}; % Isco Volume A
x12 = A {:, 15}; % Datum Zeit
y12 = A {:, 19}; % Isco Pressure B
x13 = A {:, 15}; % Datum Zeit
y13 = A {:, 20}; % Isco Flowrate B
x14 = A {:, 15}; % Datum Zeit
y14 = A {:, 21}; % Isco Volume B
x15 = A {:, 15}; % Datum Zeit
y15= A {:, 22}; % Isco Pressure C
x16 = A {:, 15}; % Datum Zeit
y16= A {:, 23}; % Isco Flowrate C
x17 = A {:, 15}; % Datum Zeit
y17= A {:, 24}; % Isco Volume C % x18 = A {:, 25}; % Labbook Temp date % y18 = A {:, 26}; % Labbook Temp % x19 = A {:, 25}; % Sandproduciton time % y19 = A {:, 27}; % Sandproduction rate
x20 = A {:, 15}; % Cumulative Isco time
y20 = A {:, 27}; % Cumulative Isco Volume
x21 = A {:, 15}; % Cumulative Isco time
y21 = A {:, 28}; % Piston Way in [cm]
x22 = B {:, 2}; % Date/Time
y22 = B {:, 18}; % Sh
f1 = figure('NumberTitle','off','Name','High flow through conditions','Color', rgb('White')); % Abbildung keine Nummer im Titel,Titel, Hintergrundfarbe: weiß
left_color = [000]; % linke y-Achse schwarz
right_color = [000]; % rechte y-Achse rot set(f1,'defaultAxesColorOrder',[left_color; right_color]); % definiert das Farbschema für die Abbildung
ax1 = subplot(3,1,1); % (4,1,1) = 4 Graphics,1 column,1 Position/Order Funktioniert nur so lange wie man die Positionen der Graphen nicht einzeln definiert
ax2 = subplot(3,1,2);
ax3 = subplot(3,1,3);
%PLOT1
yyaxis (ax1,'left')% linke y-Achse und alle dazugehörigen Daten
plot(ax1,x,y,x1,y1,x3,y3,x5,y5,'LineWidth',.9); % Daten input, Linienstärke in Pixeln % title(ax1,'Pressure'); % Titel % xlabel(ax1,'Time []'); % Titel x-Achse ylabel(ax1,'Pressure [bar]','FontSize',10,'Color','k'); % Titel y-Achse, Schriftgröße, Farbe
yyaxis (ax1,'right')% rechte y-Achse und alle dazugehörigen Daten plot(ax1,x21,y21,'Color', rgb ('Crimson'),'LineWidth',.9) ylabel(ax1,'Displacement [cm]','FontSize',10,'Color', rgb('Crimson')) ylim(ax1, [025])% definiert den angezeigten Bereich der y-Achse
% lgd = legend (ax1,'Parr','Wika','Star Oddi 71','Star Oddi 74','Piston way'); % fügt eine Legende hinzu in Reihenfolge der Dateneingabe in plot(...); % lgd.FontSize = 10; % definiert die Schriftgröße der Legende % Schriftgröße der Legende % lgd.TextColor = 'k'; % Schriftfarbe der Legende 'k'=schwarz % lgd.Location = 'best'; % definiert die Position der Legende
set(ax1, 'Units', 'normalized'); % definiert die Einhaltung der Einheiten set(ax1, 'Position', [0.10.720.80.25]); % Verschiebung links unten Breite Höhe set(ax1, 'xticklabel',{[]}); % entfernt die x-Achsen Beschriftung
Hi, mein Problem besteht leider immernoch. Gibt es denn nicht irgendeinen leichten weg das Datums/Zeit Format zu ändern und statt die variable Zeitangabe die sich beim zoom verändert einfach die Zeit als aufsummierte Stunde darzustellen? Ich hoffe es findet sich noch jemand der mir helfen kann
_________________
ich verstehe die Frage nicht.
Der Code ist recht länglich, und zumindest für mich ist nicht klar, worauf sich die Frage bezieht. Ausführen kann ich den Code leider auch nicht. Fehlermeldung:
Error using readtable (line 197)
Range input exceeds bounds for this file extension. Row values must be between 1 and 65536 and columns values must be between 'A' and 'IV'.
Error in Untitled (line 1)
A = readtable('B02.11.17.xls','Range','A3:AB172711'); % definiert die Tabelle
Wenn ich die Anzahl der Zeilen reduziere:
Error using readtable (line 197)
Unable to open file 'C:\...\sh_high.xls' as a workbook. Check that the file exists, read access is available, and the file is a valid spreadsheet file.
Error in Untitled (line 2)
B = readtable ('sh_high.xls','Range','A16:T10576');
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo Harald,
erstmal danke das du dich mit meiner Frage beschäftigst!
wenns es hilf lade ich den Code nochmal vollständig hoch. Wie gesagt ich bin noch recht unerfahren was Matlab angeht und wahrscheinlich sieht mein code deswegen etaw länglich aus. Meine frage ist ob es eine Möglichkeit gibt wenn mein Zeiteingabe Format
aus Jahr/Monat/Tag/Stunde:Minute:Sekunde besteht wie in der Tabelle angegben, das stattdessin in Stunden anzugeben. Halt nur nicht im 24 Stunden Zyklus sonder kumulativ also z.B. das dann zwei Tage 48 Stunden sind. Ich hoffe jetzt ist meine Frage verständlich.
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hi,
ich glaube das, dass die Lösung sein könnte aber irgendwie bekomme ich das so nicht ans laufen. Wenn ich nicht nur einen Wert habe den ich fest eintrage sonder x mit ein paar tausend Einträgen wie bekomme ich das dann ans laufen? Mag ne dumme Frage sein, aber ich komme einfach nicht drauf wenn ich mir nur die Matlab-hilfe ansehe. Hier nochmal der vollständige Code und die dazugehörige datei. Und vielen Dank für die Hilfe!!!
B17.10.17.xls
Beschreibung:
da muss man dann wieder .xlsx draus machen weil das forum das nur als xls erlaubt
deine Variablen sind ja schon datetime. Du brauchst also nur die zweite Zeile verwenden, z.B. mit x statt d.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo Harald,
also das mit der dt = hours(d-d(1)) hat schon mal ganz gut funktioniert und bin wirklich dankbar das du für mein Problem eine Lösung gefunden hast! Die Gleichung verschiebt jetzt aber den Anfang aller Grpahen in einer Abblidung auf Null und nicht entsprechend der eigentlichen Zeit, sprich ich müsste alle Graphen von Hand wieder an die richtige Position verschieben und hab auch schon etwas experimentiert. Wenn man hinter dem d(1) noch +... schreibt verschiebt sich der Graph auf der x-Achse. Könntest du mir vielleicht sagen was genau die Zeile dt = hours(d-d(1)) macht bis Hours versteh ich das alles aber was macht (d-d(1))? und gibt es eine Lösung das die Graphen ihre Position beibehalten?
_________________
Hi,
ich konnte das Problem jetzt doch selber lösen ich weiß zwar immer noch nicht wie genau das in der Klammer funktioniert aber wenn man (d - d1(1)) nimmt dann stimmt die Position wieder.
_________________
Besten Grüße Laurenz
Einstellungen und Berechtigungen
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
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.