필터 지우기
필터 지우기

How do i replace this code to fast up?

조회 수: 1 (최근 30일)
subha
subha 2014년 8월 25일
답변: Iain 2014년 8월 29일
Variable poshidstates have 4 possible values(0,1,2,3). Everytime, poshidstates has to select 1 value out of this four.In this below code, i=100,j=500. Because of below mentioned code part , my program run more than 8 hour instead of just 1 hour(I have to call this code for 600 batches and each batch for 50 times). how can i replace this?
val_vect=[0 1 2 3];
for i=1:numcases;
for j=1:numhid;
prob=[poshidprobs0(i,j),poshidprobs1(i,j),poshidprobs2(i,j),poshidprobs3(i,j)];
K=find(mnrnd(1,prob)==1);
poshidstate(i,j)=val_vect(K);
end
end
  댓글 수: 16
Iain
Iain 2014년 8월 28일
Ok, now I see why it takes so long. You're repeating that calculation 30,000 times.
But seeing what you're doing, this might be faster:
temp = rand(100, 500);
poshidstate = (temp > poshidprobs0) + (temp > (poshidprobs0 + poshidprobs1)) + (temp > (poshidprobs0 + poshidprobs1 + poshidprobs2));
subha
subha 2014년 8월 28일
편집: subha 2014년 8월 29일
Hi lain, Thanks a lot..I am so happy. You saved lots and lots of time .Problem resolved. I am searching for this for long. Now its just take 40 minutes. Thank u so much.No words to express.So happy. Please post this as answer. So many will be looking for this. Thanks mathworks

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

채택된 답변

Iain
Iain 2014년 8월 29일
Ok, now I see why it takes so long. You're repeating that calculation 30,000 times.
But seeing what you're doing, this might be faster:
temp = rand(100, 500);
poshidstate = (temp > poshidprobs0) + (temp > (poshidprobs0 + poshidprobs1)) + (temp > (poshidprobs0 + poshidprobs1 + poshidprobs2));

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by