Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Reducing time code takes to run using profile viewer
조회 수: 1 (최근 30일)
이전 댓글 표시
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일
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일
댓글 수: 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!