我正在尝试读取包含格式数据的csv文件:
02/01/2012 03/01/2012 04/01/2012 05/01/2012 06/01/2012 09/01/2012 10/01/2012
1w 0.652 0.626 0.606 0.584 0.564 0.546 0.53
2w 0.738 0.716 0.7 0.68 0.662 0.645 0.628
3w 0.845 0.826 0.808 0.785 0.762 0.746 0.734
1m 1.005 0.988 0.97 0.951 0.93 0.912 0.894
2m 1.165 1.152 1.137 1.122 1.105 1.092 1.083
3m 1.343 1.333 1.319 1.303 1.288 1.276 1.267
4m 1.425 1.416 1.403 1.387 1.372 1.362 1.355
我看了帖子: How to use "csvread" when the contents in the file have different formats?
Reading date and time from CSV file in MATLAB
但我仍然无法弄清楚如何读取包含表示日期的字符串的第一行并将其转换为matlab日期格式。
答案 0 :(得分:4)
尝试以下方法:
%# open file for reading
fid = fopen('file.csv', 'rt');
%# read first line and extract date strings
dt = textscan(fgetl(fid), '%s');
%# read the rest of the data
D = textscan(fid, '%s %f %f %f %f %f %f %f', 'CollectOutput',1);
%# close file
fclose(fid);
%# convert to serial date numbers
dt = datenum(dt{1}, 'mm/dd/yyyy')
%# place data in individual cells
D = [D{1} num2cell(D{2})]
结果:
dt =
734900
734929
734960
734990
735021
735113
735143
D =
'1w' [0.652] [0.626] [0.606] [0.584] [0.564] [0.546] [ 0.53]
'2w' [0.738] [0.716] [ 0.7] [ 0.68] [0.662] [0.645] [0.628]
'3w' [0.845] [0.826] [0.808] [0.785] [0.762] [0.746] [0.734]
'1m' [1.005] [0.988] [ 0.97] [0.951] [ 0.93] [0.912] [0.894]
'2m' [1.165] [1.152] [1.137] [1.122] [1.105] [1.092] [1.083]
'3m' [1.343] [1.333] [1.319] [1.303] [1.288] [1.276] [1.267]
'4m' [1.425] [1.416] [1.403] [1.387] [1.372] [1.362] [1.355]