2011-04-13 100 views
2

我的文件有一個標題和每個列的標題,然後是列。我有興趣從第四列中提取數據到MATLAB變量中。如何在MATLAB中導入我的大文本文件

我碰到幾個問題。一個是,當我使用導入嚮導(它截斷文件爲191,686行)時,由於某種原因,大約有3百萬個單元格和MATLAB截斷了這個。

下面是該文件的前幾行:

Channels: 1 
Count: 3600000 
Start: 40640.854055 04/07/11 16:29:50 
End: 40640.895721 04/07/11 17:29:50                    

Date Time Time Stamp Time from Start EEG 1_8401 
04/07/11   16:29:50  40640.687388 0.000000  3.854626e+001  
04/07/11   16:29:50  40640.687388 0.001000  2.664706e+001  
04/07/11   16:29:50  40640.687388 0.002000  1.425481e+001  
04/07/11   16:29:50  40640.687388 0.003000  1.704369e+000  
04/07/11   16:29:50  40640.687388 0.004000  -1.070827e+001 
04/07/11   16:29:50  40640.687388 0.005000  -2.290569e+001 

這裏是我用來導入該文件時,它被截斷的腳本:

function importfile(fileToRead1) 

DELIMITER = '\t'; 
HEADERLINES = 6; 

% Import the file 
newData1 = importdata(fileToRead1, DELIMITER, HEADERLINES); 

vars = fieldnames(newData1); 
for i = 1:length(vars) 
    assignin('base', vars{i}, newData1.(vars{i})); 
end 

我想做某事像這樣與textscan但我不知道如何跳過頭這樣做,並不斷得到緩衝區溢出錯誤:

fid = fopen('scan1.dat'); 
C = textscan(fid, '%*d/%*d/%*d %*d:%*d:%*d %*f %*f %f') 
fclose(fid); 

回答

1

下面是使用TEXTSCAN一個解決辦法:

fid = fopen('scan1.dat','r'); 
dataCell = textscan(fid,'%*s %*s %*f %*f %f','HeaderLines',6); 
fclose(fid); 

第6行使用'HeaderLines'參數忽略,日期和時間讀爲字符串,忽略(不讀取它們爲整數,而忽略他們一點更緊湊),並且浮點數據的前兩列被忽略。 dataCell{1}的內容將成爲您數據的最後一列。