2016-06-01 68 views
0

整数を要素とする複数の行と2つの列を持つ配列があります。私は両方の列に存在しない要素を含む行を削除したい。特定の条件を満たす配列から行を削除するMATLAB

1 2 
    1 6 
    7 1 
    4 7 
    6 4 
    9 1 
    6 2 

下記として たとえばI 2 & 9を除く全ての要素が両方の列に存在することを見る、行列Aを有しています。だから私は、出力に与えられる行1、行6および行7を削除したい

1 6 
7 1 
4 7 
6 4 

私は両方の行の各要素内のために存在しない要素を含むリストを形成することであると考えることができるものリストはこの番号を含む配列 'A'の行を見つけ出し、各行を削除することによって配列から行を削除します。

私は数百万行の配列でこの操作を実行する必要があり、上記の手順には多くの時間がかかります。より効率的な方法で助けてください。

乾杯。

答えて

1

ismemberを使用して、各列のメンバーが他の列にあるかどうかを判断できます。

% Find the elements in column 2 that are present in column 1 AND 
% elements in column 1 that are present in column 2. 

toKeep = ismember(A(:,2), A(:,1)) & ismember(A(:,1), A(:,2)); 
B = A(tokeep,:); 

% 1  6 
% 7  1 
% 4  7 
% 6  4 
関連する問題