How to avoid an Infinite Loop?
    조회 수: 8 (최근 30일)
  
       이전 댓글 표시
    
Hi, 
I'm encountering an infinite loop problem. I tried to debug my code but couldn't figure it out, so I would appreciate your thoughts and ideas.
[nComponents,sizes,members] = networkComponents(NetA);
[nComponentsB,sizesB,membersB] = networkComponents(NetB);
while sizes(1)~=sizesB(1)
    for ii=1:Nodes   
        if nnz(NetA(ii,:))<1 && nnz(NetA(:,ii))<1  && ~ismember(ii,attack) 
             C(ii,:)=0; % All nodes in Layer B coupled to neighboring nodes will get failed
             indab=ismember(inda,ii);
             indab=find(indab);
             NetB(indb(indab),:)=0;
             NetB(:,indb(indab))=0;
        end
    end
% Propagation back to Layer A
    for pp=1:Nodes
        if nnz(NetB(pp,:))<1 && nnz(NetB(:,pp))<1   
           C(:,pp)=0;
           indba=ismember(indb,pp);
           indba=find(indba);
           NetA(inda(indba),:)=0;
           NetA(:,inda(indba))=0;
        end
    end
end
Where,
 "NetA" and "NetB" are square symmetric matrices.
"inda" and "indb" are row vectors of the same size.
"attack" and "Nodes" are positive integers.
"sizes(1)" and "sizesB(1)" are positive integers.
댓글 수: 1
  per isakson
      
      
 2020년 11월 7일
				
      편집: per isakson
      
      
 2020년 11월 7일
  
			You increases your chances to get a prompt answer if you provide sample data so that we easier can run your code.
답변 (1개)
  David Goodmanson
      
      
 2020년 11월 7일
        
      편집: David Goodmanson
      
      
 2020년 11월 7일
  
       Waseem,
Nothing in the entire while loop alters either 'sizes' or 'sizesB'.  So if sizes(1) ~= sizesB(1), that condition will not ever change, leading to an infinite while loop.  For the loop to terminate, you will have to change either sizes(1) or sizesB(1) within the loop, in such a way that the two eventually are equal.  
댓글 수: 4
참고 항목
카테고리
				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!