如果我想找到两个无序集合的并集,表示为1D向量,例如:
a = [2 4 6 8 1]
b = [1 2 5 7 9]
我可以使用union函数:
c = union(a,b)
给出答案:
c = [1 2 4 5 6 7 8 9]
然而,这似乎相当缓慢(相对而言)。如果我对它进行了tic-toc测试,我得到:
>> for test = 1
tic
c = union(a,b);
toc
end
Elapsed time is 0.000906 seconds.
然而,如果我使用这种更复杂的方法,我会得到更快的结果:
>> for test = 1
tic
a_1 = zeros(1,9);
b_1 = zeros(1,9);
a_1(a) = 1;
b_1(b) = 1;
c_1 = or(a_1,b_1);
c = find(c_1);
toc
end
Elapsed time is 0.000100 seconds.
这仍然为c提供了相同的答案,但速度提高了9倍(这个小例子,我不确定它的缩放程度)
使用联盟有什么好处?任何人都可以建议一种更紧凑的方式来表达我使用的第二种方法吗?
感谢
答案 0 :(得分:5)
几条评论: