2012-10-02 282 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