matlab读取带有日期,字符串和数字的csv文件

时间:2014-03-06 06:01:27

标签: matlab csv input types

如何将以下输入csv文件读入matlab。

mid     cid     rate    value    date 
1262    24294   4       ?        7/4/04
1810    18187   3       ?        3/12/04
2000    23573   5       ?        1/20/05
3312    25907   1       ?        5/12/05

我想要一个包含5列[mid,cid,rate,value,date]

的矩阵

注意:“value”列应为-1而不是问号。

我尝试使用cvsread,但它会出错。

谢谢!

1 个答案:

答案 0 :(得分:2)

查看this answerthis question。我认为它完全符合您的要求。

您可以尝试textscan并使用datenum

手动转换日期列
fid = fopen('datafile.csv');
data = textscan(fid, '%f %f %f %s', 'Delimiter', ',', 'HeaderLines', 1);
fclose(f);
data{4} = datenum(data{4});

将返回双精度的单元数组数据,其中第四列是与每个日期对应的MATLAB datenum,而每个其他列是文件中的相应列。

使用此方法,您需要单独阅读标题行。它可以很容易地完成:

mid = data{1};   % etc...

您还可以从文件中读取名称并使用eval进行分配,但如果列数较少,建议您避免使用eval