原文转自 https://www.ilovematlab.cn/thread-147000-1-1.html
两个一样大小的矩阵,找出第一个矩阵第一行与第二个矩阵每行之间相同元素,然后找出第一个矩阵第二行与第二个矩阵每行之间相同元素,以此类推。
matlab尽量利用矩阵运算,避免for循环
a = randi(5,5)
b = randi(5,5)
aR = repmat(a',[1,1,5]);
aP = permute(aR,[3,2,1]);
bs = b';
bR = repmat(bs,[1,1,5]);
DiffArr = aP == bR; %DiffArr 第三维上的每一项对应于 a中的每一列对应于b的整个矩阵的差异
扩展:
有两个数,[x,y],想找出矩阵 a 中每行同时包括[x,y]的行索引
ce = 0; % 不包含
compn(:,:,1) = repmat(x,size(a));
compn(:,:,2) = repmat(y,size(a));
compe = repmat(a,[1,1,2]);
ifcom = compn==compe;
com = sum(sum(ifcom,3),2);
if find(com>1)
[ce,~] = find(com>1);
end