2012-10-02 278 views
1

我有一个.csv文件,其中包含我们说的50行。Matlab:从.csv文件读取字符串格式的文件名

在每一行的开始,我有一个文件名,格式如下001_02_03.bmp,后跟值用逗号分隔。这样的事情:

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

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

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

回答

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列是双重%f%f%f%f%f%f类型(或者您可以选择将其更改为反映整数数据类型 - 我个人很少打扰,除非数据量很大或浮点精度是个问题)。

请注意,如果您只想获得第一列而忽略其余列,则可以用%s% %*[^\n]替换格式字符串。最后一点,如果您的CSV文件有一个标题行,你可以使用HeaderLines可选输入textscan跳过它。

+1

+1看起来很相似,我删除我的;) – angainor

+0

@angainor这对你非常有礼貌,但如果你在一两分钟之内发帖,我会很乐意给你+1的相同答案。仅仅因为我提前几秒钟就获得了所有功劳,这似乎很公平。无论如何,谢谢:-) –

+0

我如何从单元中访问每个单独的文件名? – Simon