Converting a timetable to a matrix

71 次查看(过去 30 天)
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 个评论
dpb
dpb 2018-4-6
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 2018-4-6
I tried regexp(TT.TimeStamp,'\s+', 'split'); still getting the same error

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2018-4-7
编辑:Walter Roberson 2018-4-7
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 个评论
Walter Roberson
Walter Roberson 2018-4-7
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

请先登录,再进行评论。

更多回答(1 个)

Peter Perkins
Peter Perkins 2018-4-11
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.

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by