Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Studierende:
Praktikum - Optische Verbrennungsdiagnostik von Zündsystemen mit MATLAB
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Praktikant (w/m) Toolentwicklung Matlab
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Pflichtpraktikum/ Praxissemester im Bereich R&D - Software
Branche: Elektrotechnik, Elektronik
über Campusjäger GmbH - Böblingen

Werkstudent (m/w) - Entwicklung von Elektrolyseanlagen
Branche: mehrere
IAV GmbH - Gifhorn

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Datum und Zeit als kumulative Stunden

 

Laurenz
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2018, 19:13     Titel: Datum und Zeit als kumulative Stunden
  Antworten mit Zitat      
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.


Code:
clc

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 = [0 0 0];                                               % linke y-Achse schwarz
right_color = [0 0 0];                                              % 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);                            


%PLOT 1
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, [0 25])                                                  % definiert den angezeigten Bereich der y-Achse


% tstart = datetime (2017,11,29,12,00,00);                         % Startzeit Intervall (Jahr,Monat,Tag,Stunde,Minute,Sekunde)
% tend = datetime (2017,11,29,13,00,00);                           % Endzeit Intervall (Jahr,Monat,Tag,Stunde,Minute,Sekunde)
% xlim(ax1,[tstart tend]);                                         % Intervall x-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.1 0.72 0.8 0.25]);                                        % Verschiebung links unten Breite Höhe
set(ax1, 'xticklabel',{[]});                                                      % entfernt die x-Achsen Beschriftung

annotation('textbox',[0.1005 0.946 0.015 0.023],'String','\bf A','FitBoxToText','off',...
           'FontSize',12,'FontName','Arial', 'HorizontalAlignment','center',...
           'VerticalAlignment','middle','LineStyle','-','EdgeColor','k','Margin',0.01,...
           'LineWidth',1,'BackgroundColor','k','Color','w','Units','normalized');
       
       
%PLOT 2

yyaxis (ax2,'left')

plot(ax2,x2,y2,x4,y4','LineWidth',.9);
% title (ax2, 'Temperature');
% xlabel (ax2,'Time []');
ylabel (ax2,'Temperature [°C]','FontSize',10,'Color','k');
ylim (ax2,[-10 40]);




yyaxis (ax2, 'right');

plot(ax2,x22,y22,'Color',rgb('Crimson'),'Linewidth',.9);
ylabel(ax2,'Hydrate sturation [%]','FontSize',10,'Color', rgb('Crimson'));

% tstart = datetime (2017,11,29,12,00,00);
% tend = datetime (2017,11,29,13,00,00);
% xlim (ax2,[tstart tend]);
% ylim (ax2,[-10 30]);

% lgd = legend (ax2,'');
% lgd.FontSize = 10;
% lgd.TextColor = 'k';
% lgd.Location = 'northwest';
% lgd.EdgeColor = 'k';
% lgd.LineWidth = 1;


set(ax2, 'Units', 'normalized');
set(ax2, 'Position', [0.10 0.42 0.8 0.25]);

annotation('textbox',[0.1005 0.646 0.015 0.023],'String','\bf B','FitBoxToText','off',...
           'FontSize',12,'FontName','Arial', 'HorizontalAlignment','center',...
           'VerticalAlignment','middle','LineStyle','-','EdgeColor','k','Margin',0.01,...
           'LineWidth',1,'BackgroundColor','k','Color','w','Units','normalized');      
       


%POLT3
yyaxis (ax3, 'left');

plot(ax3,x7,y7,x8,y8,'LineWidth',.9);
% title (ax3,'N_2 Flow');
% xlabel (ax3,'Time');
ylabel (ax3,'Flow [nm^3]','FontSize',10,'Color','k');
ylim (ax3, [0 25]);


yyaxis (ax3, 'right');
% ylabel(ax3,'Flow [nm^3]','FontSize',10,'Color', rgb('Crimson'));

% tstart = datetime (2017,11,29,12,00,00);
% tend = datetime (2017,11,29,13,00,00);
% xlim (ax3,[tstart tend]);
ylim (ax3,[0 25]);

% lgd = legend (ax3,'Flow[nm^3/ds]','Flow cumulativ [nm3]');
% lgd.FontSize = 10;
% lgd.TextColor = 'k';
% lgd.Location = 'best';

set(ax3, 'Units', 'normalized');
set(ax3, 'Position', [0.1 0.08 0.8 0.25]);

annotation('textbox',[0.1005 0.306 0.015 0.023],'String','\bf C','FitBoxToText','off',...
           'FontSize',12,'FontName','Arial','HorizontalAlignment','center',...
           'VerticalAlignment','middle','LineStyle','-','EdgeColor','k','Margin',0.01,...
           'LineWidth',1,'BackgroundColor','k','Color','w','Units','normalized');


B02.11.17.xls
 Beschreibung:

Download
 Dateiname:  B02.11.17.xls
 Dateigröße:  4.58 MB
 Heruntergeladen:  18 mal
sh_high.xls
 Beschreibung:

Download
 Dateiname:  sh_high.xls
 Dateigröße:  3.34 MB
 Heruntergeladen:  18 mal

_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen


Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2018, 11:31     Titel:
  Antworten mit Zitat      

_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen
 
Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2018, 11:32     Titel:
  Antworten mit Zitat      
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 
_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.974
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 23.08.2018, 11:52     Titel:
  Antworten mit Zitat      
Hallo,

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2018, 12:11     Titel:
  Antworten mit Zitat      
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. 
_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.974
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 23.08.2018, 14:14     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Datumsangaben als datetime vorliegen hast oder mit datetime umwandeln kannst, kein Problem:

Code:
d = datetime(2018,1,1,1:23,randi(59, 1, 23), randi(59, 1, 23))';
dt = hours(d - d(1))


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2018, 13:39     Titel:
  Antworten mit Zitat      
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

Download
 Dateiname:  B17.10.17.xls
 Dateigröße:  2.44 MB
 Heruntergeladen:  3 mal
B17_10_zoom.m
 Beschreibung:

Download
 Dateiname:  B17_10_zoom.m
 Dateigröße:  11.26 KB
 Heruntergeladen:  3 mal

_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.974
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.09.2018, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2018, 10:21     Titel:
  Antworten mit Zitat      
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? 
_________________

Besten Grüße Laurenz
Private Nachricht senden Benutzer-Profile anzeigen
 
Laurenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2018, 11:05     Titel:
  Antworten mit Zitat      
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
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.