Hi all,
I have the following code, how can I avoid the for to make it faster?
a=[10:5:50];
b=[10:20:50];
c=rand(size(a));
for i=length(b)-1
d=c(a>=b(i) & a<b(i+1));
end
thanks
cheers

댓글 수: 1

Since you're only storing the last values of d in each iteration, you can skip the for-loop completely:
i = length(b)-1
d = c(a>=b(i)) & a<b(i+1))
but I am pretty sure you intend to do something else.
What should happen with the values of d obtained in the iterations 1 to length(b)-2?

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

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2014년 5월 14일
편집: Andrei Bobrov 2014년 5월 15일

0 개 추천

a=[10:5:50];
b=[10:20:50];
c=rand(size(a));
[~,ii] = histc(a,b);
d = accumarray(ii(:),c(:),size(b(:)),@(x){x})

댓글 수: 3

pietro
pietro 2014년 5월 15일
편집: pietro 2014년 5월 15일
Hi Andrei,
thanks. I tried with my code but the empty bins at the end of the array are skipped. Here an axample:
a=[10:5:20, 55:5:90];
b=[10:20:170];
c=rand(size(a));
[er,ii] = histc(a,b);
d = accumarray(ii(:),c(:),[],@(x){x});
d should be a 8 elements array instead it is 4 elements array. How could I do to take into account the empty bins at the end of the array?
corrected
pietro
pietro 2014년 5월 15일
It works. Thanks

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

추가 답변 (0개)

카테고리

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

제품

태그

질문:

2014년 5월 14일

댓글:

2014년 5월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by