将CSV文件中的值导入一个单元格数组

时间:2013-03-07 11:38:29

标签: matlab csv

我有一个类似于以下内容的.dat文件:

* ID=Minilog-T
* Serial Number=1328
* Study ID=Rostherne 2008
* Start Time=13-11-2008,14:23:14
* Finish Time=09-12-2009,13:01:53
* Sample Period=02:00:00
* Number of Deployments=9
* Date(dd-mm-yyyy),Time(hh:mm:ss),Celsius (°C)
13-11-2008,14:23:14,20.6
13-11-2008,16:23:14,15.3

我想将数据插入到我所拥有的单元格数组中:

dat = {'13-11-2008','14:23:14','20.6';'13-11-2008','16:23:14','15.3'};

dat = 

    '13-11-2008'    '14:23:14'    '20.6'
    '13-11-2008'    '16:23:14'    '15.3'

我试过了:

fid = fopen(...);
dat = textscan(fid,'%s%s%s','headerlines',8);

然而,这会将所有内容导入3个单独的单元格阵列,即它不会采用与矩阵相同的格式。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:4)

问题是textscan将每个提取的列放在自己的单元格中,因此需要稍微不同的方法。

一种可能的方法是使用textscan提取相关的行,然后使用regexp将每个行拆分为逗号分隔的字符串:

dat = textscan(fid, '%s', 'headerlines', 8, 'delimiter', '\n')
C = regexp(dat{1}, ',', 'split');
dat = vertcat(C{:})
相关问题