我有一个2百万行+ 1列变量,它是一个单元格表,每个单元格包含一个日期时间(table_datetime)。 我需要从这个表(array_datetime)中创建一个datetring数组。
我目前的代码:
parfor i = 1:length(table_datetime)
temp_cellstr = cellstr(table_datetime{i,1});
temp_matstr = [cell2mat(temp_cellstr)];
array_datetime(i,:) = [temp_matstr];
end
array_datetime = datestr(array_datetime,'mm.dd.yyyy HH:MM:SS');
目前这需要我大约40分钟(并行使用2名工人)。 我的表的长度很长,但有没有更快的方法从表中提取日期时间并将它们转换为一个datetring数组?
答案 0 :(得分:1)
最好使用datetime
数组,然后使用对其进行操作的矢量化方法。我会这样做:
array_datetime = vertcat(table_datetime{:});
array_datetime.Format = 'MM.dd.yyyy hh:mm:ss';
char_datetime = char(cellstr(array_datetime));
对于使用R2017a的机器上的1e6元件,此部分大约需要12秒。
如果你甚至不能形成cell
的{{1}}数组,而只是使用datetime
的数组,那会更好。