在matlab中查找矩阵的所有列之间的公共元素

时间:2016-11-04 09:40:25

标签: 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

遗憾的是问题没有解决,因为A的维度未知,所以我们与B有同样的问题! 谢谢大家。

1 个答案:

答案 0 :(得分: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