2013-08-20 70 views
1

我有一個巨大的csv文件,我想加載matlab。但是,我只對我知道名稱的特定列感興趣。如何獲取csv文件的列數?

作爲第一步,我想檢查一下csv文件有多少列。我怎麼用matlab做到這一點?

+3

算逗號的數量,直到一個換行符然後添加一個可能? – Jonesopolis

+0

問題是在我的情況下沒有換行符,所以fgetl不起作用:( – RoflcoptrException

+0

CSV的列有一個分隔符和一行換行符,你的設置如何? – Jonesopolis

回答

0

1-)讀取文件
2-的第一行)計數逗號或分隔符的字符數,如果它沒有逗號
3-)添加1到計數,其結果是列數在文件中。

2

由於Jonesy和erelender建議,我認爲這將做到這一點:

fid=fopen(filename); 
    tline = fgetl(fid); 
    fclose(fid); 
    length(find(tline==','))+1 

既然你似乎不知道正在使用什麼樣的回車符(或字符編碼?)的話,我會建議逐步採樣您的文件,直到遇到可識別的CR字符。要做到這一點的方法之一是遍歷像

A = fscanf(fileID, ['%' num2str(N) 'c'], sizeA); 

其中N是讀取的字符數。在每次迭代測試A中檢查是否存在回車符,如果遇到回車符則停止。一旦你知道回車的位置是用正確的N重複並且執行length(find...)操作,或者在每次迭代中交替累加逗號的數量。您可能想要檢查您的文件是否正在沿着行讀取(是否總是?),請檢查幾個示例以確保它是正確的。

+1

OP如何表示'fgetl'獲勝不工作? –

0

如果CSV只有數值可以使用:

M=csvread('file_name.csv'); 

[row,col]=size(M);