MATLAB制作相交得更快

Joh*_*nyF 0 optimization matlab set-intersection

让两个{A,B}大小的数组1xN

我想找到相同指数的案例数量

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

我试过了

casess= intersect( find(A==1),find(B==0 ))
Run Code Online (Sandbox Code Playgroud)

但这很慢.

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

buz*_*jwa 5

可以使用以下公式计算此条件为真的情况的数量:

numCases = sum(A == 1 & B == 0);
Run Code Online (Sandbox Code Playgroud)

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

ind = find(A == 1 & B == 0);
Run Code Online (Sandbox Code Playgroud)

或者通过逻辑索引直接访问具有相同大小的矩阵:

C = zeros(size(A));
C(A == 1 & B == 0) = 5;
Run Code Online (Sandbox Code Playgroud)