2014-04-03 3 views
0

약 880 단어의 에세이가 포함 된 '.txt'(ANSI 인코딩) 파일이 있습니다. 공백이있는 텍스트를 읽고 싶습니다. matlab에서 해당 파일을 읽고 싶지만 matlab에서 '버퍼 오버플로'가 발생합니다 오류가 발생했습니다.대용량의 텍스트를 읽는 matlab에

e=textread(pathToFile,'whitespace',''); 
%%% further processing 

나는 누군가가 이것에 대한 해결 방법을 제안 할 수 matlab에 2011을 사용하고 있습니다 :

난 다음 코드를 사용하고 있습니다.

답변

1

입력 스트림이 너무 커서 현재 버퍼에 맞지 않으므로 (기본적으로 바이트의 최대 문자열 길이는 4095입니다).

당신은 을 고려, 대용량 데이터 파일을 가져 오려면, 또는

e = textread(pathToFile, 'whitespace', '', 'bufsize', 8191); % or larger 

처럼 'bufsize' 선택적 매개 변수를 사용하여 버퍼 크기를 증가 필요한 메모리의 양을 감소 세그먼트에서 파일을 읽을 수 있습니다. 예를 들어 here을 확인하십시오.

자세한 내용은 here을 확인하십시오.

+0

게시되지 않은 텍스트 파일에서 읽어야하는 반면 게시 된 모든 링크는 형식이 지정된 텍스트 파일에서 데이터를 읽는 것으로 나타났습니다. –

2

넌 textscan을 사용할 수

이것은 셀 어레이 내의 개방 FileID에에서 (개행 문자를 기준으로) 제 100 개 행을 저장
C = textscan(fileID,'%s', 100, 'Delimiter', '\n'); 

. 공백이 보존됩니다.

+0

하지만 선의 수를 미리 알지 못합니다 ... 텍스트 파일의 줄 수를 얻는 데 필요한 모든 funtion이 있습니까? –

+0

숫자를 지정할 필요가 없습니다 - 그것을 제거하면 EOF에 도달 할 때까지 개별 라인을 읽습니다. – nkjt

+0

@nkjt 내가 matlab에 2013 그것을 시도하고 완벽하게 작동합니다. 그러나 matlab 2011b에서는 파일에서 읽은 텍스트를 문자열 유형으로 변환하지 않습니다. –