有效解析matlab中的CSV文件

时间:2015-11-22 23:05:11

标签: matlab csv

我正在使用包含以下格式信息的CSV文件:

      col1      col2          col3
row1  id1  , text1 (year1) , a|b|c
row2  id2  , text2 (year2) , a|b|c|d|e
row3  id3  , text3 (year3) , a|b
 ...

CSV中的行数非常大。这些年份嵌入括号中的col2中。另外,可以看出col3可以有不同数量的元素。

我想高效地阅读CSV文件并以数组结束每个项目(id),如下所示:

对于ID为#_i的'item'

A = [id_i,text_i,year_i,101010001] 

如果col3中的所有可能特征都是[a,b,c,d,....,z],则二元向量显示其存在与否。

我对在MATLAB中有效实现这一点很感兴趣。想法非常受欢迎。谢谢

2 个答案:

答案 0 :(得分:1)

我想将我发现的内容添加为读取CSV文件的最快方法之一:

  

importdata()

这将允许您读取数字和非数字数据,但它假定有一些标题行。您可以将标题行的数量作为输入参数输入importdata(),也可以让它自己尝试...它过去不适用于我的用途。 对于我来说,这比xlsread()快得多,在那里花了六分之一的时间来阅读6倍大的东西!

如果您只阅读数字数据,则可以使用csvread() - 实际使用dlmread()。 事实上,大约有10种方法可以读取这些文件,它实际上不仅取决于你的目标,还取决于文件内容。

答案 1 :(得分:0)

您可以使用T = readtable(filename)。这样就可以选择'ReadVariableNames',它将第一行作为标题,将'ReadRowNames'作为行变量。