【发布时间】:2016-04-12 13:00:12
【问题描述】:
我想将日期字符串转换为数字矩阵,并且需要以非常高的速度进行。我的意见:
dateStrings = [
'2015 07 09 12 28 18.17641';
'2015 07 09 12 28 19.17641';
'2015 07 09 12 28 20.17641']
我现在想使用sscanf 将它们转换为数字。 (原因是它非常快)。如果 dateStrings 只包含 1 个字符串,这很好用,但在这种情况下,我有 3 个字符串。 (实际上超过 50 000)。
sscanf(dateStrings, '%d %d %d %d %d %f')
所需的输出是一个如下所示的矩阵:
2015 7 9 12 28 18.176
2015 7 9 12 28 19.176
2015 7 9 12 28 20.176
有什么方法可以使用多个字符串对 sscanf 进行调用,还是我必须进行循环?
欢迎任何关于如何解决问题的建议,只要速度快!
编辑:Suever 的解决方案给了我很多速度!但是,上述输入并非真正正确。实际输入如下所示。既然您提到使用单元格实际上更快,您将如何使用此输入?目前,我使用cell2mat 转换输入,然后用空格替换某些索引以结束字符串,例如:'2015 07 09 12 28 18.17641'。
Input is 4x1 cell:
'2015-11-18T23:31:49.37486 +01:00'
'2015-11-18T23:31:49.37583 +01:00'
'2015-11-18T23:31:49.37658 +01:00'
'2015-11-18T23:31:49.37735 +01:00'
【问题讨论】:
标签: string matlab date matrix scanf