【发布时间】:2012-09-06 19:22:05
【问题描述】:
我需要在 MATLAB 中阅读以下csv 文件:
2009-04-29 01:01:42.000;16271.1;16271.1
2009-04-29 02:01:42.000;2.5;16273.6
2009-04-29 03:01:42.000;2.599609;16276.2
2009-04-29 04:01:42.000;2.5;16278.7
...
我想要三列:
时间戳;value1;value2
我尝试了这里描述的方法:
Reading date and time from CSV file in MATLAB
修改为:
filename = 'prova.csv';
fid = fopen(filename, 'rt');
a = textscan(fid, '%s %f %f', ...
'Delimiter',';', 'CollectOutput',1);
fclose(fid);
但它返回一个 1x2 单元格,其第一个元素是 a{1}='ÿþ2',其他为空。
我也曾尝试根据我的情况调整这些问题的答案:
importing data with time in MATLAB
Read data files with specific format in matlab and convert date to matal serial time
但我没有成功。
如何导入 csv 文件?
编辑在@macduff 的回答之后,我尝试将上面报告的数据复制粘贴到一个新文件中并使用:
a = textscan(fid, '%s %f %f','Delimiter',';');
它有效。
不幸的是,这并没有解决问题,因为我必须处理自动生成的 csv 文件,这似乎是导致 MATLAB 奇怪行为的原因。
【问题讨论】:
-
也许 Matlab 出于某种原因在第一行卡住了?您是否对生成的文件和您使用复制粘贴制作的文件进行了比较?你能以编程方式从 Matlab 复制/粘贴并使其工作吗?