Vectorizing the loop

This code is similar to the histc function, but each element has weights associated with it. I'm looking to either use an alternate function or to vectorize it to make things faster
I have arrays A and B, and w is an array of weights associated with each element in A.
I'm hoping to calculate:
for i=1:length(B)
x(i) = sum((A>B(i)).*w)
end
Any help is appreciated. Thanks.

5 comentarios

Junaid
Junaid el 24 de Abr. de 2012
I think it can be done, could you show small examples for A, B, w.
Nirmal
Nirmal el 24 de Abr. de 2012
The arrays are fairly long, but to give a really simple example
A = [ 1 3 2 5 3 2 5 6], B = [1 2 3 4 5], w = [0.1 0.03 0.1 0.1 0.05 0.2 0.1 0.01]
Walter Roberson
Walter Roberson el 24 de Abr. de 2012
cumsum(histc(...)) .* w ??
Nirmal
Nirmal el 24 de Abr. de 2012
Not sure if that works - particularly because cumsum(histc(...)) will have the size of B and w will have the size of A.
Sean de Wolski
Sean de Wolski el 24 de Abr. de 2012
+1

Iniciar sesión para comentar.

 Respuesta aceptada

Sean de Wolski
Sean de Wolski el 24 de Abr. de 2012

0 votos

x = w*bsxfun(@gt,A.',B)

Más respuestas (0)

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Preguntada:

el 24 de Abr. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by