Find element in matrix

Hello, I have a matrice and i whant to find if there are 2 iqual elements in diferent rows...
A =
1 2
3 5
2 4
6 1
In this case i should find the number 1 and 2. But i whant to find one at a time. Can someone help me with this? Thank´s.

1 件のコメント

Image Analyst
Image Analyst 2012 年 4 月 6 日
A is comprised on ONLY integers, right? Else you need to consider the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F

サインインしてコメントする。

 採用された回答

Richard Brown
Richard Brown 2012 年 4 月 11 日

1 投票

Here's a slightly uglier way that will work. If you need the code to perform quickly, you'd obviously preallocate your arrays m and z
z = zeros(0, 2);
m = [];
for a = unique(A(:)');
[I, ~] = find(A == a);
if numel(I) == 2
m = [m a];
z = [z; setdiff(reshape(A(I, :), 1, 4), a)];
end
end

1 件のコメント

Eduardo
Eduardo 2012 年 4 月 16 日
Thank´s a lot.

サインインしてコメントする。

その他の回答 (3 件)

Thomas
Thomas 2012 年 4 月 3 日

1 投票

A = [1 2
3 5
2 4
6 1 ];
intersect(A(:,1),A(:,2))

1 件のコメント

Sean de Wolski
Sean de Wolski 2012 年 4 月 3 日
or ismember()

サインインしてコメントする。

Thomas
Thomas 2012 年 4 月 6 日

1 投票

Try this
clear all
A = [1 2
3 5
2 4
6 1 ];
c=intersect(A(:,1),A(:,2));
for i=1:length(c)
[p(:,:),q(:,:)]=find(A==c(i));
l=A(p(:),:);
m=unique(l)';
z(i,:)=m(m~=c(i));
end
c % common elements 1 and 2
z % elements associated with 1=2,6 and 2=1,4
Output will be
c =
1.00
2.00
z =
2.00 6.00
1.00 4.00

1 件のコメント

Eduardo
Eduardo 2012 年 4 月 11 日
First of all, thanks.
It works only in some cases... In the case of the same element be on the same row but diferent lines, with this code can´t be found... Any idea?

サインインしてコメントする。

Eduardo
Eduardo 2012 年 4 月 6 日

0 投票

Thank´s... What i need is something more complex, but i didn´t explain it... If i find 2 iqual elements like number 1, for example, what i need to do is connect the other elements in the same line. If i find 1 in to lines ([1 2] and [6 1]) what i need to do is create a new line with [2 6]. I don´t know how to do it...

カテゴリ

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by