Matlab:从.csv文件中读取字符串格式的文件名

时间:2012-10-02 08:20:02

标签: matlab csv

我有一个.csv文件,其中包含让我们说50行。

在每行的开头,我有一个文件名,格式为001_02_03.bmp,后跟以逗号分隔的值。像这样:

001_02_03.bmp,20,30,45,10,40,20

有人可以告诉我如何从数据中读取第一列?

我知道如何从第二列开始获取数据。我正在使用csvread这样的X = csvread('filename.csv', 0, 1);函数。如果我尝试以相同的方式读取第一列,则会输出错误,说csvread不支持字符串格式。

1 个答案:

答案 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}}可选输入跳过它。