Reducing time code takes to run using profile viewer
정보
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
This code below takes up about 40 seconds when the size of the matrix is (13,5,2000) All im doing is removing any matrixs which are repeated.
ie if big_data(:,:,x)==big_data(:,:,x+1) then remove one of the matrixs. I know there is a unique function, but I cant seem to get it to work how I want. When I scale it up to matrixs of size (13,5,10000), its just taking too long.
Is there a better way? thanks.
while x<length(big_data(1,1,:))+1
while y<length(big_data(1,1,:))
y=y+1;
if big_data(:,:,x)==big_data(:,:,y)
big_data(:,:,y)=[];
y=y-1;
end
end
x=x+1;
y=x;
end
댓글 수: 0
답변 (2개)
Jan
2012년 2월 12일
0 개 추천
Shrinking a large array iteratively requires a lot of resouerces, equivalently to growing. Better use a logical vector to mark subarrays and delete them all together after the loops.
댓글 수: 0
Paul
2012년 2월 14일
0 개 추천
댓글 수: 1
Sean de Wolski
2012년 2월 14일
yup.
But be sure to preallocate to_delete.
Or even better use a logical vector:
to_delete = false(1,1,size(big_data,3));
while ...
to_delete(1,1,index) = true
end
etc
이 질문은 마감되었습니다.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!