Plotting Date Time data being read from an excel table

6 visualizzazioni (ultimi 30 giorni)
I'm trying to read an excel file where the format of the date/time data is: '01.10. 07:30' ('dd.mm. HH:MM')
I can read the raw text data into MATLAB using:
[num,text,both] = xlsread(filename,sheet,'B:B');
But I then try to convert this into date number format using:
DateTime = datenum(date,'dd.mm. HH:MM');
However I'm getting the following error:
Error using datenum (line 188)
DATENUM failed.
Error in WeatehrInfoGraphs (line 9)
DateTime = datenum(date,'dd.mm. HH:MM');
Caused by:
Error using dtstr2dtnummx
Failed to convert from text to date number.
  1 Commento
Ieuan Price Davies
Ieuan Price Davies il 10 Nov 2020
CAn anyone help explain how to fix this? I think it may be to do with formatting but as its an unusual way of formatting date/time I'm having some issues

Accedi per commentare.

Risposte (1)

Cris LaPierre
Cris LaPierre il 10 Nov 2020
Use readtable instead of xlsread.
Import your dates as datetimes. Avoid using datenum.
Then, when you plot, your datetimes will appear in your axis. If you need to adjust the format, use the xtickformat function.
  5 Commenti
Cris LaPierre
Cris LaPierre il 10 Nov 2020
Modificato: Cris LaPierre il 10 Nov 2020
Ok, here's how I would load the spreadsheet.
opts = detectImportOptions("ZanzibarConditions.xlsx");
opts = setvartype(opts,"Date","datetime");
opts = setvaropts(opts,"Date",'InputFormat','MM.dd. HH:mm');
% By default, variable names are the column headers. That can result in a warning (see below)
% These can be changed using the syntax below (uncomment & provide name for each column).
% opts.VariableNames = ["Hour","Date","NDI","DIAS",...];
data = readtable("ZanzibarConditions.xlsx",opts)
Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names for the table. The original column headers are saved in the VariableDescriptions property.
Set 'VariableNamingRule' to 'preserve' to use the original column headers as table variable names.
data = 168x10 table
Hour Date NormalDirectIrradiation_W_m___Bn_ DiffuseIrradiation_AnnualSum_W_m___Dh_ GlobalIrradiation_AnnualSum_W_m___Gh_ AirHumidity____Hrel_ LongWavelengthIrradiation_W_m___Lh_ OutdoorTemperature24_h_mean__C__Tamb24_ WindSpeed_m_s__Vwnd_ AverageOutdoorTemperature__C__Tamb_ ____ ____________ _________________________________ ______________________________________ _____________________________________ ____________________ ___________________________________ _______________________________________ ____________________ ___________________________________ 0 01.01. 00:00 0 0 0 88 435 28 3.7 27.2 1 01.01. 01:00 0 0 0 92 433 28.1 3.2 26.4 2 01.01. 02:00 0 0 0 96.2 430 28.2 4.8 25.5 3 01.01. 03:00 0 0 0 92.8 432 28.2 5.5 26.2 4 01.01. 04:00 0 0 0 97.6 433 28.3 5.1 25.7 5 01.01. 05:00 0 0 0 94.9 433 28.3 4 26 6 01.01. 06:00 0 12.9 12.9 93.7 432 28.4 4 26 7 01.01. 07:00 749 51.3 259 88.4 399 28.5 4.2 26.9 8 01.01. 08:00 774 107 498 79.5 393 28.5 4.2 27.8 9 01.01. 09:00 484 277 614 75.5 398 28.5 4.2 28.5 10 01.01. 10:00 844 265 972 70.4 385 28.5 4.4 29.4 11 01.01. 11:00 272 480 732 68.3 403 28.5 4.8 29.7 12 01.01. 12:00 403 434 819 66.4 399 28.5 4.6 29.9 13 01.01. 13:00 234 454 669 65.4 404 28.4 4.8 30 14 01.01. 14:00 207 412 582 64.9 404 28.3 4.6 29.9 15 01.01. 15:00 19.3 238 251 66.2 420 28.2 5.9 29.3
With your data in a table, you can access the individual variables using dot notation.
data.Date
ans = 168×1 datetime array
01.01. 00:00 01.01. 01:00 01.01. 02:00 01.01. 03:00 01.01. 04:00 01.01. 05:00 01.01. 06:00 01.01. 07:00 01.01. 08:00 01.01. 09:00 01.01. 10:00 01.01. 11:00 01.01. 12:00 01.01. 13:00 01.01. 14:00 01.01. 15:00 01.01. 16:00 01.01. 17:00 01.01. 18:00 01.01. 19:00 01.01. 20:00 01.01. 21:00 01.01. 22:00 01.01. 23:00 02.01. 00:00 02.01. 01:00 02.01. 02:00 02.01. 03:00 02.01. 04:00 02.01. 05:00
For more information, visit Accessing Data in Tables.
Peter Perkins
Peter Perkins il 20 Nov 2020
In addition to what Cris sys, you might find it convenient to convert that table to a timetable using table2timetable.

Accedi per commentare.

Categorie

Scopri di più su Dates and Time in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by