How to avoid this problem "consider preallocating the memory .for speed" in the below sample code
    조회 수: 15 (최근 30일)
  
       이전 댓글 표시
    
The code is like this
m = [];
x=[100,200,300.....]
for k= 1:1:142
    if(k >= 142)
        break;
    end
    %
    if x(k)== [5];
        mm = horzcat(mm,xx);
    elseif (x(k+1)  >= 20)
        bb = 10- lj1 ;
        cc = dec2bin(bb,3)-'0';
        mm = horzcat(mm,cc);
        %
    elseif (x(k+2)  >= 10)
        cc = dec2bin(bb,3)-'0';
        mm = horzcat(mm,cc);
        %
    end
end
how the preallocation of 'mm' can be done to increase the speed of execution. Kindly suggest
댓글 수: 3
  Steven Lord
    
      
 2017년 9월 14일
				Can you explain the purpose of your code in words? If we know the underlying problem you're trying to solve, we may be able to suggest an alternative approach that avoids growing memory each time through the loop (potentially by avoiding the loop entirely!)
답변 (2개)
  KSSV
      
      
 2017년 9월 14일
        If you are aware of the dimensions of the allocation preallcoate it using:
x = zeros(m,n) ;
If you are not aware of dimensions, and you know that it is either a row or a column vector:
x = zeros([],n) ;    % a row row vector 
x = zeros(m,[]) ;   % a column vector
If you are not sure of dimensions, allocate it as cell:
    x = cell([],n) ; 
    x = cell(m,[]) ;
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!