我有一个巨大的 csv 文件,我想用 matlab 加载。但是,我只对我知道名称的特定列感兴趣。
作为第一步,我想检查 csv 文件有多少列。我怎么能用matlab做到这一点?
正如 Jonesy 和 erelender 建议的那样,我认为这会做到:
fid=fopen(filename);
tline = fgetl(fid);
fclose(fid);
length(find(tline==','))+1
由于您似乎不知道正在使用哪种回车符(或字符编码?),所以我建议逐步对文件进行采样,直到遇到可识别的 CR 字符。一种方法是遍历类似的东西
A = fscanf(fileID, ['%' num2str(N) 'c'], sizeA);
其中N
是要读取的字符数。在每次迭代测试A
是否存在回车符时,如果遇到则停止。一旦您知道回车的位置,只需使用正确的 N 重复并执行length(find...)
操作,或者在每次迭代时交替累积逗号的数量。您可能想要检查您的文件是否被沿行读取(总是这样?),检查一些样本以确保它是。
1-) 读取文件的第一行
2-) 计算逗号的数量,如果不是逗号,则计算分隔符
3-) 将计数加 1,结果为文件中的列数。
如果 csv 只有数值,您可以使用:
M=csvread('file_name.csv');
[row,col]=size(M);