2016-09-09 5 views
0

MATLAB의 textscanfunction을 사용하여 텍스트 파일을 읽었습니다. 여기서 문제는 value에서 부동 소수점이 3 개의 공백으로 구분되어 읽을 수 없으며 일부 효율적인 구문을 사용하기 위해 MATLAB 프로그래밍이 상당히 새롭습니다. 내 현재 코드는 아래와 같습니다 :MATLAB : tex 파일에서 공백으로 구분 된 부동 값

코드 :

values = textscan(input_file, '%f %f %f %f %f\n %*[^\n]'); 

입력 파일의 형식은 다음과 다음과

파일 :

0.781844 952.962130 2251.430836 3412.734125 4456.016362 
0.788094 983.834855 2228.432996 3196.415590 4378.885466 
0.794344 967.653718 2200.798973 3119.844502 4374.097695 

를 부동 소수점 값의 경우 #을 분리하면 다음 문이 잘 작동합니다.

values = textscan(input_file, '%f#%f#%f#%f#%f\n %*[^\n]'); 

토큰 화를 제외한 다른 해결책이 있습니까?

+0

읽으려는 파일에서 샘플 문자열을 제공 할 수 있습니까? 예를 들어 귀하의 의견은 어떻게 생겼습니까?) – selyunin

답변

1

또한 단일 구분 기호로 반복되는 공간을 치료하기 위해 MultipleDelimsAsOne을 활성화해야하는 구분 기호를 지정해야합니다 필요한 경우

value = textscan(input_file, '%f %f %f %f %f \n ','Delimiter',' ','MultipleDelimsAsOne',1); 

을 한 번에 여러 개의 구분 기호를 지정할 수도 있습니다.

del = {';',' '}; 
+0

이 작동하지 않습니다. 형식 지정자 문자열에 공백이 있는지 확인 하시겠습니까? –

+0

설명서의 예제를 보면 단락 기호에 단일 공백을 사용할 수있는 것 같습니다. 너 그거 해봤 니? –

+0

필자는 내 대답을 편집하여 샘플에서이 코드를 테스트하고 모든 것이 작동합니다. – obchardon

0

textscan을 사용할 필요가없는 경우 importdata를 사용할 수 있습니다. 여기서 구분 기호를 매개 변수로 지정할 수 있습니다. 문서 http://se.mathworks.com/help/matlab/ref/importdata.html

코드 예제

filename = 'myfile01.txt'; 
delimiterIn = ' '; 
A = importdata(filename,delimiterIn); 
+0

파일을 한 줄씩 읽습니다. 가져 오기 데이터를 사용하기 위해 전체 논리를 변경해야 할 수도 있습니다. –

관련 문제