2

EMx3 マトリックスの値を含むNx3 マトリックスの行を見つけることになっているコードを書いていますTが、それらは必ずしも同じ順序ではありません。動作するものを書きましたが、スタイルに満足できず、使用ismemberしているループではなく、および検索を使用して行列に論理演算を適用したいと考えています。

E = [7 36 37; 9 1 5; 4 34 100; 4 12 33; 4 34 33];
T = [37 7 36; 4 34 33];      

for i=1:size(T,1)
    T(i,:) = sort(T(i,:));
end

for i=1:size(E,1)
    E(i,:) = sort(E(i,:));
end

res = zeros(size(T,1),1);
for i=1:size(T,1)
    a = ismember(E,t(i,:));    
    res(i,1) = find(sum(a,2)==3);
end

E私の考えは、 andの各行を並べ替えてT、同じ順序になり、各行をループで比較することでした。しかし、私は自分のコードをより MATLAB スタイルで書くことを学ぼうとしismemberており、同じ操作を適用して、おそらく見つけたいと思っています。このようなもの:

a = sum(ismember(E,T(1,1))~=0,2);
b = sum(ismember(E,T(1,2))~=0,2);
c = sum(ismember(E,T(1,3))~=0,2);
r = find(a&b&c);

もっと優雅な解決策はありますか?

ありがとうございました!

4

2 に答える 2