Converting a timetable to a matrix

110 visualizzazioni (ultimi 30 giorni)
AA
AA il 6 Apr 2018
Risposto: Peter Perkins il 11 Apr 2018
Consider the following table
TimeStamp X1 X2 X3 X4
____________________ ______ ______ ______ ______
03-Jan-2005 01:08:00 1.9193 1.9193 1.9193 1.9193
03-Jan-2005 01:13:00 1.9193 1.9193 1.906 1.906
I tried converting it back to a matrix in order to get the following format:
732315 108 1.9193000 1.9193000 1.9193000 1.9193000
732315 113 1.9193000 1.9193000 1.9060000 1.9060000
Somehow I get an error with the following code:
TT=timetable2table(F);
numformat = datevec(TT.TimeStamp);
since_midnight=numformat(:,4)*60+numformat(:,5);
temp=regexp(TT.Timestamp,'\s+', 'split');
datecol=cellfun(@(C)C{1},temp,'uniform',0);
formatfreak='dd/mm/yyyy';
serialdates = datenum(char(datecol),formatfreak);
every=[sum(:,2),sum(:,3),sum(:,4),sum(:,5)];
matrix=cell2mat(every);
everyfull=[serialdates(:),since_midnight(:)];
x=[everyfull,matrix];
Error:
Error using regexp
The 'STRING' input must be either a char row vector, a cell array of char row vectors, or a string
  2 Commenti
dpb
dpb il 6 Apr 2018
temp=regexp(ans,'\s+', 'split');
Looks like you pasted in a line from command window while testing; 'ans' is whatever it might happen to be in your code at the time you call regexp.
AA
AA il 6 Apr 2018
I tried regexp(TT.TimeStamp,'\s+', 'split'); still getting the same error

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 7 Apr 2018
Modificato: Walter Roberson il 7 Apr 2018
TT.TimeStamp is in datetime() or duration() format for a timetable() object.
daynumbers = floor(datenum(TT.TimeStamp));
HM = hour(TT.TimeStamp)*100 + minute(TT.TimeStamp);
output = [daynumbers(:), HM(:), TT{:,:}];
  2 Commenti
Walter Roberson
Walter Roberson il 7 Apr 2018
No, *100. You have 01:13:00 and you want to see 113 from that. hour() of this is 1, and minute() of this is 13. If you multiplied the 1 by 60 and added 13 you would get 73, number of minutes into the day, which is potentially a valid thing to want to see, but your example output requested 113 which is 1*100+13

Accedi per commentare.

Più risposte (1)

Peter Perkins
Peter Perkins il 11 Apr 2018
AA, I guess Walter has answered your question, but I can't think of a reason why you would want to convert your table containing datetimes into those datenum+otherThing values. Maybe there's other code somewhere that expects that, but otherwise, it seems like an unnecessary headache.

Categorie

Scopri di più su Data Type Conversion 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