我正在研究一些将.csv文件解析成表格的MATLAB代码。 CVS文件有七列,以逗号分隔,还包含数千行。
现在解析代码如下所示:
fid = fopen('data.csv', 'r');
parsed = textscan(fid, '%s %f %f %f %f %f %f', 'Delimiter',',', 'HeaderLines', 1);
但是disp(parsed);
返回一个包含只有一列的数组的对象。这些数据看起来像这样:
[209,1] = 3/8/2015 16:12:00
[210,1] = 8.09
[211,1] = 952
[212,1] = 603
[213,1] = 100.8
[214,1] = 20.8
[215,1] = 11.3
[216,1] = 10.66
[217,1] = 3/8/2015 16:47:00
[218,1] = 8.1
[219,1] = 950
[220,1] = 604
[221,1] = 100
[222,1] = 15.8
[223,1] = 11.18
[224,1] = 10.71
[225,1] = 3/8/2015 17:22:00
[226,1] = 8.07
[227,1] = 981
如何将此数据分解为表格。我希望能够通过以下数据进行交互:parsed[1][3]
。我想我只是缺少一个明显的参数来传递给textscan()
函数,但是我找不到任何关于它的文档。
非常感谢您提供的任何帮助!
更新
以下是我正在使用的CSV文件的一小部分示例:
dt,temp,ldo,turbidity,ldo.per,orp,conductivity,ph
3/8/2015 00:02:00,7.99,11.52,3.8,96.3,612,1038,8.01
3/8/2015 00:07:00,7.98,11.52,3.5,96.3,612,1038,8.01
3/8/2015 00:12:00,7.96,11.52,3.4,96.3,612,1038,8.01
3/8/2015 00:17:00,7.97,11.54,3.7,96.5,612,1038,8.01
我希望输出看起来像:
A =
3/8/2015 00:02:00 7.99 11.52 3.8 96.3 612 1038 8.01
3/8/2015 00:07:00 7.98 11.52 3.5 96.3 612 1038 8.01
3/8/2015 00:12:00 7.96 11.52 3.4 96.3 612 1038 8.01
3/8/2015 00:17:00 7.97 11.54 3.7 96.5 612 1038 8.01
答案 0 :(得分:2)
您可以使用importdata
:
d = importdata('filename.csv');
这为结构d
提供了字段data
(数字)和textdata
(字符串的单元格数组):
>> d.data
ans =
1.0e+003 *
0.0080 0.0115 0.0038 0.0963 0.6120 1.0380 0.0080
0.0080 0.0115 0.0035 0.0963 0.6120 1.0380 0.0080
0.0080 0.0115 0.0034 0.0963 0.6120 1.0380 0.0080
0.0080 0.0115 0.0037 0.0965 0.6120 1.0380 0.0080
>> d.textdata
ans =
'dt' 'temp' 'ldo' 'turbidity' 'ldo.per' 'orp' 'conductivity' 'ph'
'3/8/2015 00:02:00' '' '' '' '' '' '' ''
'3/8/2015 00:07:00' '' '' '' '' '' '' ''
'3/8/2015 00:12:00' '' '' '' '' '' '' ''
'3/8/2015 00:17:00' '' '' '' '' '' '' ''
要合并它们,您需要一个单元格数组:
result = [d.textdata(2:end,1) num2cell(d.data)];
给出了
result =
'3/8/2015 00:02:00' [7.9900] [11.5200] [3.8000] [96.3000] [612] [1038] [8.0100]
'3/8/2015 00:07:00' [7.9800] [11.5200] [3.5000] [96.3000] [612] [1038] [8.0100]
'3/8/2015 00:12:00' [7.9600] [11.5200] [3.4000] [96.3000] [612] [1038] [8.0100]
'3/8/2015 00:17:00' [7.9700] [11.5400] [3.7000] [96.5000] [612] [1038] [8.0100]