Find the common number in rows?

조회 수: 2 (최근 30일)
Patrick
Patrick 2014년 11월 15일
편집: Azzi Abdelmalek 2014년 11월 15일
Say
A = [1 2 3;
1 4 6;
7 8 1;
6 3 1]
The common number in every row is 1. I want to output the result with all other number except the common number, 1. Desired result is
[2 3 4 6 7 8]
repeated numbers are shown once only. As I know, this can be achieved using 'unique(A)'. But I dunno how to get rid of the common number. Thank you all for help!

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 11월 15일
편집: Azzi Abdelmalek 2014년 11월 15일
A = [1 2 3; 1 4 6; 7 8 1; 6 3 1];
[ii,jj,kk]=unique(sort(A,2))
setdiff(ii,ii(histc(kk,1:numel(ii))==size(A,1)))
Or
[ii,jj,kk]=unique(sort(A,2))
out=ii(histc(kk,1:numel(ii))<size(A,1))

추가 답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2014년 11월 15일
A = [1 2 3; 1 4 6; 7 8 1; 6 3 1]
B=A(2:end,:);
idx=arrayfun(@(x) all(any(ismember(B,x),2)),A(1,:))
out=setdiff(unique(B),A(idx))

the cyclist
the cyclist 2014년 11월 15일
Here is a straightforward method:
A = [1 2 3;
1 4 6;
7 8 1;
6 3 1];
common = A(1,:);
for nr = 2:size(A,1)
common = intersect(common,A(nr,:));
end
result = setdiff(A,common)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by