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

Junaid
Junaid 2012년 4월 24일
I think it can be done, could you show small examples for A, B, w.
Nirmal
Nirmal 2012년 4월 24일
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 2012년 4월 24일
cumsum(histc(...)) .* w ??
Nirmal
Nirmal 2012년 4월 24일
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 2012년 4월 24일
+1

댓글을 달려면 로그인하십시오.

 채택된 답변

Sean de Wolski
Sean de Wolski 2012년 4월 24일

0 개 추천

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by