MATLAB读取带有时间戳和值的CSV文件

MATLAB读取带有时间戳和值的CSV文件,matlab,csv,matrix,import,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('

我有来自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);
问题是,当读取文件时,格式错误,显示方式不同

如果您能提供任何帮助或建议,我们将不胜感激

编辑

当使用@adrian答案时,结果是

2015 -11 -9
8    -17 -1
因此,MATLAB似乎认为“-”是分隔符(分隔符)

不支持格式说明符。只需输入标题行数(根据示例,我认为是一行)和标题列数,0

但是,您的文件包含非数字数据。因此,请将其导入:

这将得到一个结构,
data
,其中包含两个字段:
data。data
包含数值数据,即包含
值的向量
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支持毫秒。

尝试解决方案时请查看编辑:)@user3536870我不明白您是如何使用此处提供的方法从提供的样本数据中获得数字的。我使用Matrix=csvread('filename.csv',1,0)获得结果的;当我尝试这样做时,循环不在答案中,然后它在我对问题的编辑中给出了结果。没有headers@user3536870循环版本似乎工作正常。请注意,如果未包含标题,则需要从1而不是2运行
for
循环。其他一切都可以保持原样
 data = importdata('file_name.csv')
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