从日期时间表MATLAB中快速提取一个datetring数组?

时间:2017-07-17 06:34:00

标签: arrays string matlab datetime

我有一个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数组?

1 个答案:

答案 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的数组,那会更好。