2011-04-13 6 views
2

내 파일의 머리글과 각 열의 머리글 및 그 다음 열이 있습니다. 4 열에서 MATLAB 변수로 데이터를 추출하는 데 관심이 있습니다.큰 텍스트 파일을 MATLAB에서 가져 오는 방법

필자는 약간의 문제가 있습니다. 하나는 약 3 백만 개의 셀이 있고 가져 오기 마법사를 사용할 때 MATLAB이 어떤 이유에서이 파일을 자릅니다 (파일을 191,686 행으로 자릅니다). 여기

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를 사용하여 하나 개의 솔루션입니다 : 첫 번째 6 선이 'HeaderLines' 매개 변수를 사용하여 무시됩니다

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

, 날짜와 시간을 문자열로 읽어 및 정수로 그들을 읽고 그들을 무시보다 (좀 더 컴팩트 무시), 부동 소수점 데이터의 처음 두 열은 무시됩니다. dataCell{1}의 내용은 데이터의 마지막 열입니다.

관련 문제