我有一个.csv文件,其中包含让我们说50
行。
在每行的开头,我有一个文件名,格式为001_02_03.bmp
,后跟以逗号分隔的值。像这样:
001_02_03.bmp,20,30,45,10,40,20
有人可以告诉我如何从数据中读取第一列?
我知道如何从第二列开始获取数据。我正在使用csvread
这样的X = csvread('filename.csv', 0, 1);
函数。如果我尝试以相同的方式读取第一列,则会输出错误,说csvread
不支持字符串格式。
答案 0 :(得分:2)
使用textscan
,即:
fid1 = fopen(csvFileName);
X = textscan(fid1, '%s%f%f%f%f%f%f', 'Delimiter', ',');
fclose(fid1);
FirstCol = X{1, 1};
更详细一点? csvread
仅适用于纯数字数据,因此您无法使用它来获取带有.bmp或下划线的数据。因此我们使用textscan
。输入到textscan
的有趣的格式字符串只是说按顺序排列的是字符串%s
,然后接下来的6列是double %f%f%f%f%f%f
类型(或者你可能选择改变它以反映整数数据类型 - 我个人很少打扰,除非数据量很大或浮点精度是一个问题。)
注意,如果您只想获取第一列并忽略其余列,则可以使用%s% %*[^\n]
替换格式字符串。最后一点,如果您的csv文件有标题行,您可以使用HeaderLines
textscan
的{{1}}可选输入跳过它。