2015-02-03 1 views
1

저는 연구 과제에 대한이 과제를 진행하고 있습니다. 나는 다음과 같은 정보를 갖는 제 18 개 라인 텍스트 파일이 있습니다Matlab에서 첫 번째 18 줄의 텍스트 파일 제거

0 0.022 62.07 92.43 0.00 
10 0.045 0.00 NaN NaN 
20 0.070 0.00 NaN NaN 
30 0.096 0.00 NaN NaN 

내가 대한 파악해야합니다

Person Study, Run1102 
Sex M 
Born  
Code 4E8F-58F4-0F68 

Record 07-10-2011 Preferred01 
Application trplatf 
Creation date 07/10/2011 16:33:24 
Exercises { 
# Name Start,sec Length,sec Start time 
1 Gait 0.00 90.04 
} 

Frequency,Hz 100.000 
Count 9004 

Time,ms Position,m Butterfly.force,N Butterfly.x,mm Butterfly.y,mm 
Calibr  

정보의 나머지 ,, 약 9000 라인은 같은 포맷 하나, Matlab에 파일을 올바르게로드 한 다음 18 줄을 제거하는 방법. for 루프 나 matlab 내의 함수를 사용해야하는지 잘 모르겠다.

내가 가지고있는 것이 확실하지 않지만 지금까지는 내 코드입니다.

fid1=fopen('','rt'); 
fid2=fopen('formattedFile','wt'); 
nSkip=18; % number records; use input() if doing often and not fixed 
for idx=1:nSkip 
    l=fgetl(fid1); 
end 
% rest of file 
while ~feof(fid1) 
    l=fgetl(fid1); 
    fprintf(fid2,'%s\n',l); 
end 
fid1=fclose(fid1); 
fid2=fclose(fid2); 

어떤 종류의 지침이 도움이 될 것입니다! 저는 Matlab을 처음 사용합니다. 코드가 이해가되지 않으면 죄송합니다. 온라인에서 도움을 찾고 있습니다.

답변

1

는이 같은 파일의 모든 행을 읽을 수 있습니다 : 라인을 가진 셀 어레이를 생성

fid = fopen(filename); 
Rows = textscan(fid, '%s', 'delimiter', '\n'); 
fclose(fid); 

합니다.

당신은 다음과 같이 19 행의 열을 검색 할 수 있습니다 :

Columns= cellfun(@(x) textscan(x,'%f','delimiter','\t','CollectOutput',1), Rows{1,1}(19:end, :)); 

행이 일관된 크기가있는 경우, 당신은 cell2mat으로 배열로 돌려 할 수 있어야한다.

+0

그래서, 나는 그것을했고 그것은 적어도 실행됩니다! 비록 그것이 효과가 있었는지 모르겠지만, 내 출력은 columns = empty matrix 0-by-1 ... 어쨌든 제대로 작동하는지 테스트를 볼 수 있습니까? – thewildone26

+0

@ thewildone26 행은 올바르게'행 {1,1}'에서 읽히고 저장됩니까? –

+0

@ thewildone26 방금 파일을 보았는데 제대로 작동했습니다. 실제로 필요하지 않기 때문에'Treatasempty' 논쟁을 삭제했습니다. –

관련 문제