2014-09-22 320 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行這樣所以最後我想一個50×136的矩陣。我想抓住冒號後面的空格值,從1開始(1:31:4),然後到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) 

在此先感謝和任何幫助,非常感謝。

回答

1

有了一個小的修改,以你的fmt我想這樣的作品:

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

我加入了id作爲一個字符串,(冒號作爲一個整數之前數雖然這似乎沒有必要)。然後使用c{1}獲取每行的第一個數字,並使用c{3}訪問其他值的矩陣。

相關問題