Find the common number in rows?
2 次查看(过去 30 天)
显示 更早的评论
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!
0 个评论
采纳的回答
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))
0 个评论
更多回答(2 个)
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))
0 个评论
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)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!