3

次のような一連のデータがあります。

データ =

4 35
4 36
4 37
4 39
4 50
6 24
6 35
6 36
6 39
6 50
6 78
10 24
10 35
10 36
10 39
...

実際の行列は 70000 X 2 のオーダーです。私が望むのは、すべての一意のデータ ペアを含む行列を形成することです。そのため、各要素は前のものと同じではなく、次のようになります。

結果 =

4 35
6 24
10 36

このステップ1のような方法について考えてい
ます。一意の列1のすべてのインデックスを見つけます。この場合は次のようになります

インデックス =

1
6
12

ステップ 2. このように for ループを実行します

result = data(index);

for j = 1:length(index)

  if result(j,2) == result(j-1,2)

     result(j) = data(index+1)

  end

end

ここで問題が発生します。このような結果が得られる可能性があります

4 35
6 24
10 35

それからそれはユニークではありません。しかし、私は次のようなものを書きたくありません

 if result(j,2) = result(j-1,2) ...
     or result(j,2) = result(j-2,2) ...
     or result(j,2) = result(j-3,2) ...
     or result(j,2) = result(j-4,2) ...
 result(j) = data(index+?)

それはさらに複雑になります。

事前に助けてくれてありがとう。

4

3 に答える 3

0

ちょっと私はそれを行う方法を理解しています:)助けてくれてありがとう:)

for j = 1:500 % random number, big enough to find out all my pairs
    k = 1;
    while any(bsxfun(@eq, store, data(k,2))|bsxfun(@eq, store, data(k,1)))
        k = k+1;
       if k > length(data)-1, break, end  

end

    pair(j,:) = data(k,:);
    store(2*j-1) = pair(j,1);
    store(2*j) = pair(j,2);
    fprintf('the loop we are at is %d \n',j);

end
于 2013-08-01T09:42:15.073 に答える