从.csv读取日期戳到matlab - 需要更快的代码

时间:2016-03-08 13:06:11

标签: performance matlab date csv time

我的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占据了大部分时间,但我不确定我能绕过它。欢迎任何建议!

0 个答案:

没有答案