2016-11-04 85 views
3

我有一个问题,以找到矩阵的所有列之间的共同元素在MATLAB中,我试图解决它我的自我,基本问题是相交函数集相交只有两个矩阵之间,所以我写了这样的代码在MATLAB中找到矩阵的所有列之间的共同元素

A=randi(n,m); 
B=struct(); 
for k=1:size(A,2)-1 
    B.(['b' num2str(k)])=intersect(A(:,k),A(:,k+1)); 
end 

遗憾的是没有解决导致的尺寸问题是未知的,所以我们有同样的问题为B! 谢谢大家。

回答

1

使用一个量化的方法bsxfun -

unqA = unique(A) 
out = unqA(all(any(bsxfun(@eq,A,permute(unqA,[2,3,1])),1),2)) 

采样运行 -

A = 
    8  5  6  4  8 
    4  6  7  5  9 
    9  4  4  7  5 
    9  4  9  5  6 
    9  9  7  9  6 
    9  5  9  4  8 
    8  5  6  9  8 
    7  5  6  7  4 
out = 
    4 
    9 
相关问题