Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Advice on a few bottlenecks in my code
조회 수: 2 (최근 30일)
이전 댓글 표시
According to the profiler, I have four lines of code taking up 99% of my CPU time.
if(statment)
pCond = (bold_Phi(k,2) <= data(thisIdx : idx, 7));
else
pCond = (data(thisIdx : idx, 7) <= bold_Phi(k,2));
end
IDY = find( (data(thisIdx : idx, 1) == -1) & (pCond) & (data(thisIdx : idx, 11) == bold_Phi(k,p + 10)) );
IDZ = find( (dV(thisIdx : idx, :) <= -bold_Phi(k,3)) & (pCond) & (sCond) );
where bold_Phi and data are 2D matrices and dV is a vector.
I dont think the time penalty is coming from the indexing as the following statement is very quick
~isnan(data(thisIdx : idx, 3));
anything obvious I have missed that will help me speed up these few statements?
thank you
댓글 수: 4
답변 (2개)
Kye Taylor
2013년 2월 21일
If you don't need the actual indices, you can omit the find command to save time. In particular, notice that the following code blocks are equivalent but the first does not use find:
data = rand(1000,1);
isBig = data>0.5;
bigData = data(isBig);
and
data = rand(1000,1);
isBigIdx = find(data>0.5);
bigData2 = data(isBigIdx);
댓글 수: 1
Mark Whirdy
2013년 2월 22일
편집: Mark Whirdy
2013년 2월 22일
(Almost-) Never use the find() function!
I'd need to see the contents of the variables, but at first glance you can maybe just remove it altogether with same functionality?
댓글 수: 0
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!