intersect
calls ismember
。就您而言,您不需要所有复杂的检查intersect
这样做,所以你可以节省一些开销并调用ismember
直接(注意:我确保在计时之前调用这两个函数):
a = randi(1000,100,1);
b = randi(1000,100,1);
>> tic,intersect(a,b),toc
ans =
76
338
490
548
550
801
914
930
Elapsed time is 0.027104 seconds.
>> tic,a(ismember(a,b)),toc
ans =
914
801
490
548
930
550
76
338
Elapsed time is 0.000613 seconds.
您可以通过调用来加快速度ismembc
,直接进行实际测试的函数。注意ismembc
需要排序的数组(因此,如果您的输入已经排序,您可以放弃排序!)
tic,a=sort(a);b=sort(b);a(ismembc(a,b)),toc
ans =
76
338
490
548
550
801
914
930
Elapsed time is 0.000473 seconds.