使用str2num提供一个代表时间的单独文件
我有一个数据标题ABCDE_D20110507T11522323这表示数据是在2011年5月7日的时间(T之后)11:52:23:23收集的。 使用这个剧本,我应该能够提取这些信息使用str2num提供一个代表时间的单独文件
fnames=dir('ABCDE*.mat')
hour=str2num(fnames(1).data(11:18))
(11:18)
代表字符数 我在做什么错?我应该在脚本中指定我想要的格式,例如(HH,MM,SS)吗? 预先感谢任何帮助
您可以从文件名获得完整的日期,然后提取小时。
fnames = dir('ABCDE*.mat');
for idx = 1:size(fnames, 1)
str(idx,:) = fnames(idx).name(8:22)
dateVector(idx,:) = datevec(str(idx,:), 'yyyymmddTHHMMSS') % Convert the string to date vector
hrs(idx,:) = dateVector(idx,4:6)
end
假设您的目录中有两个文件。您的变量将如下:
str =
20130228T171052
20130228T143122
dateVector =
2013 2 28 17 10 52
2013 2 28 14 31 22
hrs =
17 10 52
14 31 22
hrs
将是小时,分钟和秒。
这正是我要找的。谢谢。然而,我试图把这条线放在str = fnames.name(8:22),我得到了以下错误。有什么建议么? 请求的输出太多。 最可能的原因是缺少[] 约在 左侧有一个逗号分隔的列表扩展名为 。 – user2013590 2013-02-28 15:10:15
@ user2013590该代码仅适用于一个文件。我更新了它。它应该适用于多个文件。 – HebeleHododo 2013-02-28 15:47:57
太棒了,非常感谢你的帮助 – user2013590 2013-02-28 18:09:59
如指出丹,你需要引用场name
的结构阵列fnames
(而不是data
这是无效的)。
hour = str2double(fname(1).name(17:18));
我的错误是一个错误的为什么会使用str2double比str2num更有益? – user2013590 2013-02-28 14:29:32
'dir'不给我一个叫'data'的字段。你的意思是'日期'或'名字'? – Dan 2013-02-28 12:38:48
你能解释一下你在努力实现一个更清晰的目标吗?你是否试图从文件名提取时间信息? – HebeleHododo 2013-02-28 12:38:58
字符11:18不对应于我可以找到的任何时间字符串,无论是在dir的日期字段还是您提供的名称中。第三:在时间表示中是不寻常的。最后的23代表什么?百分之一秒?然后用一个小数代替。并描述你想要的输出。 Matlab的datenum? – Peter 2013-02-28 13:58:13