通用元素Matlab的逐列比较

时间:2014-07-14 08:50:04

标签: matrix compare elements

如何逐列比较2个矩阵;并查找相应列中是否有任何公共元素并返回列号(注意:元素不必位于相应位置)

功能:bsxfun(@ eq,A,B)在这里没用,因为它比较了列中的相应元素。

要求:A = [1 2 3; 4 5 6; 7 8 9],B = [0 0 0; 8 7 9; 4 1 6]此处值4在A和B的第1列中是常见的;类似地,值6,9在A& B的第3列中是常见的;因此,请返回第1列和第3列。

你能建议一个方法;我很感激你。

1 个答案:

答案 0 :(得分:0)

您可以使用ismember来比较列(或行)。它返回A的逻辑索引,表示B中的匹配。使用any来逐列减少,使用find来获取列索引。

您可以在列上使用for循环或使用arrayfun

find(arrayfun(@(c) any(ismember(A(:,c), B(:,c))), 1:size(A,2)))

我很想知道你是否找到了更整洁,更简洁的解决方案!