2014-04-23 2 views
0

내가 이것을 가지고 지금까지 어떻게 .txt 파일을 읽고 matlab에서 .xlsx 파일로 변환 했습니까? 그래서

file = fileread(filenames.txt) ; 
data = textscan(file, '#:%2d \t Area:%5d \t Xp:%4d Yp:%4d \t Length:%3d B#:%2d \t R:%2d L:%2d Ch:%2d \t End 1:Xp:%4d Yp:%4d \t End 2:Xp:%4d Yp:%4d\n') ; 
data = [data{1}, num2cell([data{2:end}])] ; 
xlswrite('filenames.xlsx', data) ; 

하지만 내 텍스트 파일은 다음과 같습니다 (다양한 행이이 예제를 배수 파일을 구가 플러스 파일 인덱스 행)
File Index: 2095303 
#: 1  Area: 939  Xp:-397 Yp: 586 Length: 99 B#: 2  R: 2 L: 0 Ch:-1  End 1:Xp:-450 Yp: 588  End 2:Xp:-352 Yp: 572 
#: 2  Area: 1185  Xp:-287 Yp: 294 Length:145 B#: 2  R: 1 L: 1 Ch: 0  End 1:Xp:-317 Yp: 359  End 2:Xp:-235 Yp: 244 
#: 3  Area: 592  Xp:-242 Yp: 486 Length: 77 B#: 3  R: 2 L: 1 Ch: 0  End 1:Xp:-278 Yp: 488  End 2:Xp:-202 Yp: 477 
#: 4  Area: 818  Xp:-144 Yp: 480 Length: 60 B#: 2  R: 0 L: 2 Ch: 1  End 1:Xp:-181 Yp: 488  End 2:Xp:-135 Yp: 451 
#: 5  Area: 377  Xp: -23 Yp:-443 Length: 37 B#: 1  R: 0 L: 1 Ch: 0  End 1:Xp: -42 Yp:-459  End 2:Xp: -12 Yp:-460 
#: 6  Area: 923  Xp: 32 Yp:-234 Length: 67 B#: 1  R: 0 L: 0 Ch: 0  End 1:Xp: -3 Yp:-260  End 2:Xp: 60 Yp:-212 
#: 7  Area: 812  Xp: 150 Yp:-148 Length: 54 B#: 1  R: 0 L: 1 Ch: 0  End 1:Xp: 136 Yp:-130  End 2:Xp: 169 Yp:-161 
#: 8  Area: 5968  Xp: 428 Yp: 432 Length:402 B#: 3  R: 3 L: 0 Ch:-1  End 1:Xp: 224 Yp: 468  End 2:Xp: 622 Yp: 356 
#: 9  Area: 617  Xp: 714 Yp: 13 Length: 63 B#: 1  R: 0 L: 1 Ch: 0  End 1:Xp: 687 Yp: 35  End 2:Xp: 702 Yp: -22 

나는 파일 인덱스를 생각한다 선이 나를 망치고있다. 그러나 나는 그 정보도 필요로한다.

답변

2

확실히 첫줄에 문제가있다. 당신은 당신의 다른에 어떻게 첫 번째 줄의 변경에 따라 21 일 또는 변경을 할 수있다, 당신은 (22)와 함께 놀러해야 할 수도 있습니다 별도로 처리해야하고,

data = textscan(file(22:end),...) 

와 두 번째 라인을 시작합니다 파일. 설명되어 있듯이 문자열에 textscan을 사용하면 항상 문자열의 첫 번째 요소에서 시작하며 문자열에서 textscan을 마지막으로 사용한 시간은 중단하지 않습니다.

또한 형식 문자열에서 후행 '\ n'에 대해 걱정할 필요가 있습니다. OS에 따라 '\ n'대신 '\ r'이 필요할 수 있습니다.

마지막으로 textscan을 사용한 후에 데이터가 벡터의 셀 배열에 있음을 알 수 있으며 xlswrite를 사용하기에 적합한 형식으로 만들기 위해 추가 조작이 필요합니다.

+1

열린 파일에서 읽는 'textscan' 버전을 사용하고 파일 포인터를 존중합니다. –

+0

완벽! 정확히 내가 필요로하는 것. 고맙습니다. – FireSky

관련 문제