MATLAB 使交集更快

MATLAB-making intersect faster

设两个数组{A,B},大小为1xN

我想找出在相同索引上的案例数

满足条件A(ii)==1 & B(ii)==0

我试过了

casess= intersect( find(A==1),find(B==0 ))

但这很慢。

我相信这是因为 intersect 检查每个成员是否是另一个组的成员,但我仍在寻找解决我的小问题的最快方法。

此条件成立的案例数可以用以下公式计算:

numCases = sum(A == 1 & B == 0);

表达式 A == 1 & B == 0 给出了一个逻辑数组,例如,可用于查找条件为真的索引:

ind = find(A == 1 & B == 0);

或通过logical indexing直接访问相同大小的矩阵:

C = zeros(size(A));
C(A == 1 & B == 0) = 5;