Optimization of a nested loop

Hello guys I wrote the following code, but it takes ages to complete. Could you please help me optimizing it? A and B are matrixes
for i=1:length(A)
for j=1:length(B)
CCI = CCI + heaviside(norm(A(i,:)-B(j,:)));
end
end
Thanks

Antworten (2)

Sean de Wolski
Sean de Wolski am 22 Jun. 2012

0 Stimmen

Not necessarily faster, prettier, less confusing or better in any way with the exception of being on one line and containing the awesomeness that is bsxfun:
CCI2 = sum(sum(heaviside(sqrt(sum(bsxfun(@minus,A,reshape(B',1,size(B,2),size(B,1))).^2,2)))))
Andrei Bobrov
Andrei Bobrov am 22 Jun. 2012

0 Stimmen

other variant
CCI = (nnz(any(bsxfun(@minus,A,reshape(B',1,size(B,2),[])),2)) + size(A,1)*size(B,1))/2;

Gefragt:

am 22 Jun. 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by