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;
设两个数组{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;