Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Statistik mit MathCAD und MATLAB

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Unterschiedliche MatLab-Datumsnummern?

 

Kopi
Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 28.09.08
Wohnort: weit weg von der Heimat
Version: R2019b
     Beitrag Verfasst am: 19.11.2020, 20:09     Titel: Unterschiedliche MatLab-Datumsnummern?
  Antworten mit Zitat      
Guten Abend Harald,

ich möchte eine Grafik aus zwei Datensätzen erstellen, um die Auswirkung der Mittelwertbildung zu untersuchen. Dies stellt normalerweise kein Problem dar. MatLab bekommt aber bei ein und den selben Eingangsdaten unterschiedlichen datenum's raus (siehe Bild). Das habe ich noch nie gehabt. Was passiert hier?

Anbei der Code und die Dateien (Dateien von *.csv in *.txt umgewandelt) die ich nutze:

Code:
opts = delimitedTextImportOptions("NumVariables", 3);

% Specify range and delimiter
opts.DataLines = [2, Inf];
opts.Delimiter = ";";

% Specify column names and types
opts.VariableNames = ["Zeit", "Zeit1", "Abfluss"];
opts.VariableTypes = ["double", "datetime", "double"];

% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";

% Specify variable properties
opts = setvaropts(opts, "Zeit1", "InputFormat", "dd.MM.yyyy HH:mm");
opts = setvaropts(opts, ["Zeit", "Abfluss"], "DecimalSeparator", ",");
opts = setvaropts(opts, ["Zeit", "Abfluss"], "ThousandsSeparator", ".");

% Import the data
DD = readtable("C:\Digitalisierte_Daten.csv", opts);

%% Zeitaxhe der digitalisierte Messwerte mit MatLab auffüllen.
% Anfangs- und Endzeit sind bekannt. Die digitalisierten Stützpunkte müssen
% jetzt noch eine Matlabnummer erhalten.  
DD.ZeitNum = datenum(DD.Zeit1);

Z1 = DD.ZeitNum(end)-DD.ZeitNum(1);
Z2 = DD.Zeit(end)-DD.Zeit(1);

for ii = 2:numel(DD.Zeit)-1
    junk = DD.Zeit(ii)/Z2;
    DD.ZeitNum(ii)=DD.ZeitNum(1)+Z1*junk;
end

%% Clear temporary variables
clear opts

%% Lade Stundenmittelwerte inkl. Tagesmaximalwerte
opts = delimitedTextImportOptions("NumVariables", 2);

% Specify range and delimiter
opts.DataLines = [2, Inf];
opts.Delimiter = ";";

% Specify column names and types
opts.VariableNames = ["Zeit", "Abfluss"];
opts.VariableTypes = ["string", "double"];

% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";

% Specify variable properties
opts = setvaropts(opts, "Zeit", "WhitespaceRule", "preserve");
opts = setvaropts(opts, "Zeit", "EmptyFieldRule", "auto");
opts = setvaropts(opts, "Abfluss", "DecimalSeparator", ",");
opts = setvaropts(opts, "Abfluss", "ThousandsSeparator", ".");

% Import the data
SMW = readtable("C:\Stundenmittelwerte_und_maxTageswerte.csv", opts);
clear opts
SMW.ZeitNum = datenum(SMW.Zeit);

%% Plot zum Vergleichen der digitalisierten Messwerte und Stundenmittelwerte inkl. maximale Tagesmittelwerten

figure1 = figure('WindowState','maximized','Color',[1 1 1]);
axes1 = axes('Parent',figure1);
hold(axes1,'on');
plot(DD.ZeitNum,DD.Abfluss,'DisplayName','Messwerte');
hold on
plot(SMW.ZeitNum, SMW.Abfluss,'DisplayName','Stundenmittel- und maximale Tageswerte');
ylabel({'Abfluss $[m^3/s]$'},'Interpreter','latex');

xlabel({'Zeit'},'Interpreter','latex');
title(['Vergleich von Messwerten und Stundenmittelwerten inkl. Tagesmaximalwert f\"ur' newline 'den Zeitraum vom 31. Mai 2013, 0 Uhr bis zum 3. Juni 2013, 6 Uhr'],...
    'FontWeight','bold',...
    'FontSize',18,...
    'Interpreter','latex');

% Uncomment the following line to preserve the X-limits of the axes
xlim(axes1,[DD.ZeitNum(1) DD.ZeitNum(end)]);
box(axes1,'on');
grid(axes1,'on');
hold(axes1,'off');
% Set the remaining axes properties
set(axes1,'TickLabelInterpreter','latex','XTick',...
    [DD.ZeitNum(1):1/24: DD.ZeitNum(end)],'XTickLabel',...
    cellstr(datestr(DD.ZeitNum(1):1/24: DD.ZeitNum(end),'HH:MM')),...
    'XTickLabelRotation',45);
% Create legend
legend1 = legend(axes1,'show');
set(legend1,'Interpreter','latex');


Viele Grüße
Kopi

Stundenmittelwerte_und_maxTageswerte.txt
 Beschreibung:

Download
 Dateiname:  Stundenmittelwerte_und_maxTageswerte.txt
 Dateigröße:  1.86 KB
 Heruntergeladen:  5 mal
Digitalisierte_Daten.txt
 Beschreibung:

Download
 Dateiname:  Digitalisierte_Daten.txt
 Dateigröße:  5.28 KB
 Heruntergeladen:  5 mal
Bild_2020-11-19_193656.png
 Beschreibung:

Download
 Dateiname:  Bild_2020-11-19_193656.png
 Dateigröße:  8.6 KB
 Heruntergeladen:  6 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 22.350
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2020, 08:54     Titel:
  Antworten mit Zitat      
Hallo,

MATLAB interpretiert das Datumsformat falsch.
Code:
datestr(datenum("31.05.2013 00:00"))

Richtig:
Code:
datestr(datenum("31.05.2013 00:00","dd.mm.yyyy HH:MM"))

Schau dir generell auch datetime an. Das ist an sich ein deutlich besserer Weg, mit Datumsangaben umzugehen.

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
 
Kopi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 28.09.08
Wohnort: weit weg von der Heimat
Version: R2019b
     Beitrag Verfasst am: 20.11.2020, 18:46     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Hinweis. Das Problem hat sich erledigt. Habe die Zeit bei der zweiten Datei angepasst.

Beim Importieren von Daten mittels "ImportData" ist Vorsicht geboten.

Viele Grüße
Kopi
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


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


Copyright © 2007 - 2020 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.