2013-03-02 105 views
0

作爲我的任務的一部分,我必須讀取一個.csv文件。該文件在列下包含文本,數字數據和缺失數據的混合: 編號,標題,說明(> 100個字,可變長度),位置,時間,期限,公司,類別,來源。將.csv文件讀入MATLAB

有超過50萬行。

建議我一個命令將這個文件讀入MATLAB。

我已經試過如下:

uiopen('filename.csv',1) 

它提供了錯誤:使用textscan閱讀更多複雜的格式。然後我試着:

data =textscan('filename.csv','%f %s %s %s %s %s %s %s %s %f','HeaderLines', 1, 'Delimiter', ','); 

該命令運行完成,但它只給出一個數組(1X10)的單元格(它是空的)。因此,我沒有得到我想要的。

我也試過textread命令,但它給出了錯誤。

回答

4

textscan是你想使用的,但根據textscan的matlab文檔頁面,第一個參數應該是一個文件ID。現在你正在傳遞一個字符串。

+0

嗨mfbutner。我試着把文件ID也放在一起,但我遇到了同樣的問題。 – 2013-03-04 17:04:11

+0

因此,您的代碼現在看起來像 f = fopen('filename.csv');數據= textscan(f,'%f%s%s%s%s%s%s%s%s%f','HeaderLines',1,'Delimiter',','); – mfbutner 2013-03-04 17:15:04

1

您可能需要使用readtable嘗試:

t = readtable('filename.csv'); 

這將在Matlab中創建一個表,它可以包含字符串和數字數據。

或者,您可以使用導入工具(從Matlab的UI導入數據按鈕訪問),或者你可以使用uiimport打開它:

uiimport('filename.csv') 

這將爲你的數據的圖形演示,並且可以爲您生成代碼以進行導入。

使用textscan可能會遇到的困難是您需要正確獲取格式(%f,%s等),並且其中的任何變化都可能導致失敗。例如,如果由於某些缺失/錯誤數據而在數字字段中包含字符串,則可能會失敗。如果您選擇使用textscan並且沒有獲得您期望的結果,您可能需要嘗試使用所有'%s'格式規範。

textscan(f,'%s %s %s %s %s %s %s %s %s %s','HeaderLines', 1, 'Delimiter', ',');