1

我有一个 .csv 文件,其中包含比方说的50行。

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

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

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

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

4

1 回答 1

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只是说这些列按顺序是 string 类型%s,然后接下来的 6 列是 double 类型%f%f%f%f%f%f(或者您可以选择更改它以反映整数数据类型 - 我个人很少打扰,除非数据量巨大或浮点精度有问题)。

请注意,如果您只想获取第一列而忽略其余列,则可以将格式字符串替换为%s% %*[^\n]. 最后一点,如果您的 csv 文件有标题行,您可以HeaderLines使用textscan.

于 2012-10-02T08:22:17.093 回答