2014-09-22 2 views
1

textscan을 사용하여 텍스트 파일에서 데이터를 가져 오려고합니다. 데이터에는 몇 가지 구분 기호 (콜론 및 스페이스)가 있습니다. 137 열이있는 행렬에 데이터를 가져 오려고합니다. 다음 두개의 데이터 라인이 인 형식이다.Matlab에서 textscan을 사용하여 여러 구분 기호로 데이터 가져 오기

2 id:1 1:3 2:3 3:0 4:0 5:3 6:1 7:1 8:0 9:0 10:1 11:156 12:4 13:0 14:7 15:167 16:6.931275 17:22.076928 18:19.673353...134:1 135:0 136:2 
9 id:2 1:4 2:3 3:1 4:5 5:3 6:4 7:2 8:0 9:0 10:1 11:16 12:42 13:0 14:7 15:167 16:5.7 17:1 18:3...134:2 135:6 136:3 

이런 50 줄이므로 결국 I은 50 X 136 행렬을하고자있다. 콜론과 공간 앞에 값을 가져오고 1 (1:3 및)부터 136 (136:2136:3)으로갑니다. 아래 코드는 내가 시도하는 코드이다. 나는 약간의 연구를하면서 발견 한 코드를 트위트하려고 노력해왔다. 나는 repmat에 대한 사양을 읽고 있었는데 이것은 단지 1 x 136 매트릭스를 생산할 것 같다.

fid = fopen('./train.txt','r'); 
fmt = ['%f' repmat('%*f:%f', 1, 136)]; 
c = textscan(fid, fmt, 'CollectOutput', 1) 

감사합니다. 사전에 도움을 주시면 대단히 감사하겠습니다. 당신의 fmt에 작은 수정으로

답변

1

나는이 작품 생각 :

fmt = ['%f %s' repmat('%*d:%f', 1, 136)] 

내가 문자열로 id, 그리고이 필요하지 않는 것 있지만 정수로 콜론 앞 번호를 (추가). 그런 다음 c{1}을 사용하여 각 행의 첫 번째 숫자를 가져오고 c{3}을 사용하여 다른 값의 행렬에 액세스하십시오.

관련 문제