matlab中CSV文件的高效解析

matlab中CSV文件的高效解析,matlab,csv,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文件,并使用如下数组结束每个项目(i

我正在使用包含以下格式信息的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为#u i的“项目”:

A = [id_i,text_i,year_i,101010001] 
其中,如果col3中的所有可能特征为[a,b,c,d,…,z],则二进制向量显示其存在或不存在


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

您可以使用T
=readtable(文件名)
。这有“ReadVariableNames”选项,它将第一行作为标题,而“ReadRowNames”选项将第一列作为行变量。

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

这将允许您读取数字和非数字数据,但它假定有一定数量的标题行。您可以将页眉行数作为输入参数输入到
importdata()
,也可以让它自己尝试…我以前不使用它。 这比我的
xlsread()
要快得多,我花了六分之一的时间来阅读六倍大的东西

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

可能重复感谢。readtable非常有趣,速度也很快。当我应用时,T=readtable(filename),然后是T.col3,我可以为每一行提供所有特性列表('a','b','c')。给定一个每行包含一个字符串的单元格,我想创建一个特定类型的字符串。例如,假设我要查找任何包含字符串“a”的行,如“a”或“a |”或“a”或“a |”。想法是非常受欢迎的(例如strcmp、strfind、regexp…)好的,我认为regexp对于处理这种类型的模式非常有效。