MATLAB读取带有时间戳和值

时间:2015-11-10 11:40:06

标签: matlab csv matrix import

我有一个CSV文件中的以下示例。结构是:

Date      ,Time(Hr:Min:S:mS), Value
2015:08:20,08:20:19:123     , 0.05234
2015:08:20,08:20:19:456     , 0.06234

然后我想在MATLAB中将其读入矩阵。

尝试:

Matrix = csvread('file_name.csv');

还尝试格式化字符串。

fmt = %u:%u:%u %u:%u:%u:%u %f
Matrix = csvread('file_name.csv',fmt);

问题是当文件被读取时格式错误并以不同方式显示。

非常感谢任何帮助或建议!

修改

使用@Adriaan时,结果为

2015 -11 -9
8    -17 -1

所以似乎MATLAB认为' - '是分隔符(分隔符)

1 个答案:

答案 0 :(得分:2)

Matrix = csvread('file_name.csv',1,0);

csread不支持格式说明符。只需输入标题行数(我将其视为一个,例如)和标题列数,0。

但是,您的文件包含非数字数据。因此,使用importdata导入它:

 data = importdata('file_name.csv')

这会为您提供一个结构data,其中包含两个字段:data.data包含数字数据,即包含value的向量。 data.textdata是包含其余数据的单元格,您需要前两列并从中提取数字,即

for ii = 2:size(data.textdata,1)
    tmp1 = data.textdata{ii,1};
    Date(ii,1) = datenum(tmp1,'YYYY:MM:DD');
    tmp2 = data.textdata{ii,2};
    Date(ii,2) = datenum(tmp2,'HH:MM:SS:FFF');
end

感谢@Excaza,它支持毫秒数。