考虑两个向量
我需要找到所有与B中每个唯一元素对应的A的总和。
尽管看起来非常简单,但在MATLAB中却需要很长时间。
目前,我正在使用:
有没有任何方法可以使其运行更快?我尝试了将循环拆分并使用并行计算工具箱中的2个
注:是的,我应该买一台更好的电脑。
A = [20000000 x 1]
和 B = [20000000 x 1 ]
。我需要找到所有与B中每个唯一元素对应的A的总和。
尽管看起来非常简单,但在MATLAB中却需要很长时间。
目前,我正在使用:
u = unique(B);
length_u = length(u);
C = zeros(length_u,1);
for i = 1:length_u
C(i,1) = sum(A(B==u(i)));
end
有没有任何方法可以使其运行更快?我尝试了将循环拆分并使用并行计算工具箱中的2个
parfor
循环来运行(因为我只有2个内核)。仍需要几个小时。注:是的,我应该买一台更好的电脑。
A=randi(100,[20000000,1]);
等。 - Autonomousprofile
,它对我来说是独一无二的。 - bdecafA
和B
?如果A
的唯一元素数量相对较小,那么循环就不再是瓶颈了,但如果A
很大且有许多唯一元素,则unique
变得可以忽略。 - Shai