2016-04-01 6 views
0

Matlabで次のようにtxt.fileから一度に1つの行を抽出したいとします。セル内の2つの要素の1つの組み合わせを一度に1つずつ抽出する方法

  29,Downstairs,9481262431000,3.79,8.2,5.6252036; 
      29,Downstairs,9481312266000,2.96,7.08,4.1814466; 
      13,Walking,1047162303000,-2.41,5.18,1.5390993; 
      13,Walking,1047212260000,-0.3,1.73,-0.50395286; 
      13,Walking,1047262309000,1.27,11.03,2.5606253; 
      13,Walking,1047312266000,-1.42,14.75,8.158588; 
      14,Jogging,60423222332000,13.82,-4.37,12.64; 
      14,Jogging,60423272319000,14.33,7.08,-2.3; 
      14,Jogging,60423322338000,19.42,19.46,-7.59; 

これはファイル全体の一部です。私は最初の2つの列が持つことができるすべての組み合わせを抽出する必要があります。例えば、私は、上の

29,Downstairs 

そして

13,Walking 

そして

14,Jogging 

などを含むすべての行を抽出します。

トラバースしたいすべての組み合わせを簡単に表現する方法はありますか? txt.fileが巨大であるためです。これには36*6=216の異なる組み合わせが含まれています(最初の列には1 to 36の番号が含まれ、2番目の列には6つのアクティビティが含まれています)。そして、私は同じ組み合わせを共有する行を格納したい(通常、1つの組み合わせには、例29のような、500以上の異なるエントリがあり、下の2つだけがセル構造にあります)。

答えて

0

はその後、あなたがMYFILE.TXTというファイルにすべてのデータを持っていると仮定します

fid = fopen('myFile.txt'); 
A = textscan(fid,'%s'); 
fclose(fid); 
lines = A{1}; 
allInstances = cell(length(lines),1); 
for i = 1:length(lines) 
    temp = textscan(lines{i}, '%s', 'delimiter', ','); 
    allInstances{i} = [temp{1}{1}, ',',temp{1}{2}]; 
end 

uniqueCombos = unique(allInstances) 

結果:

uniqueCombos = 

'13,Walking' 
'14,Jogging' 
'29,Downstairs' 
+0

をあなたに@JCKazをありがとうございます。しかし、それは私が必要とするものと全く同じではありません。実際には、同じ組み合わせを共有する行を1つのセルに格納する必要があります。この場合、216個の異なるセルがあり、それぞれに数百行が含まれます。 –

関連する問題