Find the common number in rows?

2 visualizzazioni (ultimi 30 giorni)
Patrick
Patrick il 15 Nov 2014
Modificato: Azzi Abdelmalek il 15 Nov 2014
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!

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 15 Nov 2014
Modificato: Azzi Abdelmalek il 15 Nov 2014
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))

Più risposte (2)

Azzi Abdelmalek
Azzi Abdelmalek il 15 Nov 2014
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 il 15 Nov 2014
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)

Community Treasure Hunt

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

Start Hunting!

Translated by