有 6 种或多或少相似的方法bsxfun
,很难说哪个是最快的。
%example data
A = [0 1 1 1 0 0];
B = perms(A); %720x6 matrix
计算相似度:
Z = sum( bsxfun(@eq, A,B) , 2);
Z = sum( ~bsxfun(@ne, A,B) , 2);
Z = sum( ~bsxfun(@xor, A,B) , 2);
计算差异:
Z = sum( ~bsxfun(@eq, A,B) , 2);
Z = sum( bsxfun(@ne, A,B) , 2);
Z = sum( bsxfun(@xor, A,B) , 2);
Z
是一个向量,包含相等/不相等元素的数量A
对于每一行B
.
每个 100 次试验的基准(与上面的顺序相同):
t100 =
0.0081
0.0098
0.0123
0.0102
0.0087
0.0111