我的csv文件中的数据看起来像这样。时间戳和数据,每个文件大约200 000行。
2015-10-19T22:15:30.12202 +02:00,62.7
2015-10-19T22:15:30.12696 +02:00,58.5
etc
我想将其导入matlab并将时间戳转换为数字格式。数据存储在大小为N x 2的矩阵中。它应如下所示:
736154.4935, 62.7
736154.4955, 58.5
etc
仅查看日期转换,下面是我使用的代码。 rawdata {2}是时间字符串的向量(“2015-10-19T22:15:30.12696 +02:00”)。我必须做一个额外的计算,因为datenum只支持毫秒,而不是更进一步。
for i = 1:length(rawdata{2})
currDate = strsplit(rawdata{2}{i}, ' ');
currDate = currDate{1};
add_days = str2double(currDate(24:25))/(100000*3600*24);
timestamp = datenum(currDate, 'yyyy-mm-ddTHH:MM:SS.FFF')+add_days;
data(i,1) = timestamp;
end
我有1000多个文件,每个文件都有200 000多行。我的代码有效,但实际上太慢了。有什么办法可以加快速度吗?
编辑:在评论中建议使用分析后,我发现strsplit
占用了大部分时间。由于strsplit
在这种情况下并不是真的必要,所以我能够节省大量时间!
现在datenum
占据了大部分时间,但我不确定我能绕过它。欢迎任何建议!