2013-07-03 3 views
4

큰 txt 파일 (> 1GB)을 matlab으로 가져 오려고합니다.큰 텍스트 파일을 matlab으로 가져 오기 (주석, 텍스트 스캔 포함)

segarray = textscan(file_id, '%f %f %f %f', blocksize, 'delimiter','\n', 'commentStyle', '#'); 
이 가

작품이 꽤 잘,하지만 난 '#'표시가 의견 필요해 난 형식 문자열을 변경 경우 : 나는 textscan 기능을 사용

667.55535 -0.00 0.000 0.0158 
667.5554 -0.01 -0.000 0.0158 
667.55545 -0.01 4.037 10.0000 
667.5555 -0.00 4.000 10.0000 #1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz 
667.55555 -0.00 4.000 10.0000 
667.5556 -0.01 4.000 10.0000 

:

는 데이터 구조입니다 '% f % f % f % f % s'으로 변경하고 'commentStyle'을 제거하면 모든 두 번째 줄을 단일 문자열로 읽습니다./

아이디어가 있습니까?

답변

5

당신은 당신이 (그래서 textscan()에 옵션없이) 원하는 것을 달성하기 위해

segarray = textscan(fid, '%f %f %f %f %[^\n]'); 

를 사용할 수 있습니다. 마지막 형식 문자는 textscan이 아니며 후행 문자 인 개행과 일치 함을 의미합니다.

test.txt :에

이 결과

667.55535 -0.00 0.000 0.0158 
667.5554 -0.01 -0.000 0.0158 
667.55545 -0.01 4.037 10.0000 
667.5555 -0.00 4.000 10.0000 #1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz 
667.55555 -0.00 4.000 10.0000 
667.5556 -0.01 4.000 10.0000 
667.5555 -0.11 4.000 12.0000 #1 Trigger Camera 11 Hz #2 Trigger Camera 12 Hz 
667.5557 -0.00 4.000 10.0000 
667.556 -0.01 4.000 10.0000 
667.55855 -0.00 4.000 10.0000 
667.5596 -0.01 4.000 10.0000 
667.55105 -0.00 4.000 10.0000 
667.5511 -0.01 4.000 10.0000 

segarray{:}는 :

에 대해 알고 textscan의 좋은 동작입니다
[first three columns omitted for brevity] 

ans = 
    0.0158 
    0.0158 
    10.0000  
    ...  % fourth column abbreviated 
    10.0000 
    10.0000 

ans = 
    '' 
    '' 
    '' 
    '#1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz ' 
    '' 
    '' 
    '#1 Trigger Camera 11 Hz #2 Trigger Camera 12 Hz ' 
    '' 
    '' 
    '' 
    '' 
    '' 
+1

, 감사합니다. –

+0

고마워, 나는 이것을 시도했지만 나는 '구분 기호'옵션을 제거하지 않았다 ... 지금 큰 작품! – user2545669

+0

@ user2545669 : 그래, 나는 이것에 대해서도 고심하고 있었다. 그리고 나는 생각했다. "나는 또한 내가 줄을 쪼개기 위해 사용하는 성격을 배제하고있다. 그것은 옳지 않다!" :) –

관련 문제