2016-09-06 2 views
0

에서 읽기 나 탭으로 구분 줄에 항상 두 개의 값으로 .txt 파일을 가지고 :하게 Matlab : .txt 파일

0 0 
23 69 
45 108 
81 158 
110 253 
125 357 
141 492 
165 606 
179 753 
189 983 
. . 
0 0 
4 31 
33 38 
45 89 
60 115 
75 166 
93 201 
107 216 
116 291 
133 366 
148 480 
170 631 
196 720 
207 994 
. . 
0 0 
19 81 
33 102 
46 128 
72 161 
138 236 
178 398 
197 537 
210 658 
220 832 
. . 
0 0 
24 38 
40 90 
71 166 
99 193 

항상 0 0으로 시작하고 끝나는. . (80 번)

Matlab의 모든 데이터를 읽고 싶습니다. 이건 내 코드입니다 : '{.'당신은 내가 왼쪽 번호가 digNum로 저장 할 볼 수 있습니다 그래서

% Variab 
line{1} = 0; 
% Open files 
fid = fopen(('D:\Dokumente\Studium\8. Semester\BA\Vali mit einzelenne punkten\alle.txt'), 'rt'); 
% Read Data 
for i = 1:80 
    j = 1; 
    line = fgets(fid); 
    line = textscan(line,'%f %f'); 
    while line{1} ~= '.' 
     digNum{i}(j) = line{1}; 
     gewicht{i}(j) = line{2}; 
     line = fgets(fid); 
     line = textscan(line,'%f %f'); 
     j = j + 1; 
    end 
end 

{ '.'upOneValueWhen} {numberIn'Vector} upOneValueWhen} 오른쪽 숫자 gewicht ' {numberIn'Vector '}.

모든 것이 잘 작동하지만 digNum = 46 (마지막 "벡터"로 두 번째) {upOneValueWhen '.'} 숫자가 증가합니다. 나는 이유를 모른다. '나는'단지 '.' 그러나 어떤 이유로이 하나의 특별한 지점에 올라갑니다.

어떤 아이디어 ??? 미리 감사드립니다.

+0

샘플 데이터로 문제가 재현되지는 않습니다. – excaza

+0

모든 데이터를 복사하여 붙여 넣으시겠습니까? –

+0

문제를 재현하는 예제가 필요합니다. – excaza

답변

-1

지금까지 설명한 데이터는 문제를 재현하지 못합니다. 다행히 다음 단계를 통해 직접 문제를 해결할 수 있습니다.

  1. 코드에 조건부 중단 점을 배치하십시오.
  2. 일이 잘 진행되는 마지막 순간과 일이 잘못 된 첫 순간을 찾으십시오. 일을 신중하게 모든 변수는

이 문제를 신속하게 찾을 수이 방법을 변경하는 방법을 살펴, 잘 진행하고 라인으로 코드 줄을 실행하는 마지막 순간에

  • 이동합니다.

  • 0
    나는 파일이 끝날 때까지 루프 라인으로 라인에 도달하는 동안 하나에 전체 파일을 읽으려고 할

    하십시오 .가 인식 할 때

    % Open files 
    fid = fopen('test.txt'); 
    % Read Data 
    i = 1; 
    j = 1; 
    
    while(~feof(fid)) 
        line = fgetl(fid); 
    
        if strfind(line,'.') 
         i = i + 1; 
         continue; 
        end; 
    
        s = textscan(line,'%s','delimiter',' '); 
        digNum{i,j} = str2double(s{1}{1}); 
        gewicht{i,j} = str2double(s{1}{length(s{1,1})}); 
    
        j = j + 1; 
    
    end; 
    
    fclose(fid); 
    

    지금 당신은 쉽게 i를 증가 할 수 있습니다.

    또한 str2double을 사용하면 모든 데이터를 두 행렬에 넣을 수 있습니다.

    나는 위에서 언급 한대로 작동한다고 생각합니다.