如何逐列比较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列。
你能建议一个方法;我很感激你。
答案 0 :(得分:0)
您可以使用ismember
来比较列(或行)。它返回A的逻辑索引,表示B中的匹配。使用any
来逐列减少,使用find
来获取列索引。
您可以在列上使用for循环或使用arrayfun
:
find(arrayfun(@(c) any(ismember(A(:,c), B(:,c))), 1:size(A,2)))
我很想知道你是否找到了更整洁,更简洁的解决方案!