使用str2num提供表示时间的单独文件

时间:2013-02-28 12:30:04

标签: matlab

我的数据标题为ABCDE_D20110507T11522323。这表示数据是在2011年5月7日的时间(T之后)11:52:23:23收集的。 使用此脚本我应该能够提取此信息

fnames=dir('ABCDE*.mat') 
hour=str2num(fnames(1).data(11:18)) 

(11:18)表示字符编号 我究竟做错了什么?我应该在脚本中指定我想要的格式,例如(HH,MM,SS)吗? 在此先感谢您的任何帮助

2 个答案:

答案 0 :(得分:1)

您可以从文件名中获取完整日期,然后提取小时数。

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将是小时,分钟和秒。

答案 1 :(得分:0)

正如Dan指出的那样,您需要引用结构数组name的字段fnames(而不是data,这是无效的。)

hour = str2double( fname(1).name(17:18) );