在matlab中读取具有特定格式的数据文件,并将日期转换为matal连续时间

时间:2011-06-30 12:38:45

标签: matlab datetime text-files

我有一个具有以下结构的文件:

29-JUN-1995 09:29:15   21.43   41.03   22.76    8.61 1  307.98    0.85  -9.99000e+002    -999.000000       2.050651       2.323905  4.86704e+015       6.869425       2.099744       2.135507    0.66  849.584  907.607   992
29-JUN-1995 09:29:19   24.62   40.12   20.67  -14.24 0  325.23    0.79  -9.99000e+002    -999.000000       2.095562       2.095562  3.95402e+015      10.898932       2.113338       2.113338    0.00   -1.000 1010.324   992
29-JUN-1995 09:29:21   21.32   40.68   22.56    8.61 1  309.55    0.86  -9.99000e+002    -999.000000       2.047019       2.399543  5.12189e+015       7.569622       2.097261       2.140599    0.30  859.620  898.692   992
02-JUL-1995 09:34:41   23.70   41.51   21.81  -14.24 0  310.98    0.85  -9.99000e+002    -999.000000       2.086681       2.346471  4.68335e+015       7.359228       2.118588       2.149808    0.37  751.101  902.940  1035

我需要你的帮助,以便导入到Matlab数组中并将日期和时间转换为matlab连续时间。

2 个答案:

答案 0 :(得分:2)

请考虑以下代码。解析使用TEXTSCAN函数完成:

%# read and parse date file
fid = fopen('data.dat','rt');
C = textscan(fid, ['%s %s ' repmat('%f',1,19)], 'CollectOutput',true);
fclose(fid);

%# convert date/time to serial date number
dt = datenum(strcat(C{1}(:,1), {' '}, C{1}(:,2)), 'dd-mmm-yyyy HH:MM:SS');

%# combine all in one matrix
M = [dt C{2}];

答案 1 :(得分:0)

>> datenum('29-JUN-1995 09:29:15')

ans =

    7.288393953125000e+005