我有一个文件,其中包含我想在Matlab中拆分的数据值和时间戳。 格式如下:
-18.151346 Mon Jan 28 11:33:08 2013
我正在使用textscan功能尝试拆分它。
data=textscan(fid,'%f%s%s%f%s%n','delimiter','space');
我正在尝试将时间戳拆分为单独的列,以便我可以使用时间而不是日期或年份。我看了一些以前非常相似的问题,但由于某些原因,我无法让它做我想做的事。我得到的单元格数组采用这种格式。
Column 1 Column 2 Column 3
-18.151346 Mon Jan 28 11:33:08 2013
我对Matlab完全陌生,所以任何帮助都将不胜感激。 提前谢谢。
答案 0 :(得分:1)
'space'
字符串作为分隔符,这在textscan
中是非法的。请改为将其指定为' '
。'MultipleDelimsAsOne'
标记设置为1. 正确的语法应该是:
textscan( fid, '%f%s%s%s%s%n', 'delimiter', ' ', 'MultipleDelimsAsOne', 1);
如果您没有尝试修改分隔符选项,默认情况下这种行为已经正确完成,所以只省略所有选项:
textscan( fid, '%f%s%s%s%s%n');
另请注意,您需要为空格包围的字符串中的每个项目添加一个标记。换句话说,对于这样的字符串:
-18.151346 Mon Jan 28 11:33:08 2013
字符串形式的时间戳将存储在结果单元格数组的第5列中。
答案 1 :(得分:0)
要阅读我使用regexp
的时间戳。
我要建议的解决方案可以进行优化,但至少可以在第一次尝试时为您提供帮助。
A = regexp(str,'[^\s]+','match');
这样就可以匹配字符串中的所有正则表达式。然后,您知道values
和time
存储为元素1和5。
我做了一个简短的测试:
cell = {'-18.151346 Mon Jan 28 11:33:08 2013','19.33333 Tue Feb 29 10:12:23 2012'};
这会引导您进入单元格A{1,2}
。
同样,这个程序是可以完善的,但您可以将其用作提示。