2014-09-22 374 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}访问其他值的矩阵。

相关问题