How to find a matrix inside a larger matrix?
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
Im trying to find a smaller matrix inside a larger matrix using  explicit loops. I know there is functions and probably easier to locate if there is matching matrix inside a larger matrix. I want to locate matrix M, inside matrix A. How can i set up the for loops since both matrix are different size?
A,6x6 matrix
A=[8 2 9 7 6 7;
     9 5 4 1 7 0;
     1 9 8 6 7 2;
     5 4 1 0 3 0;
     9 8 6 8 6 0;
     4 1 0 5 4 1];
B, 3x3 matrix
M=[5 4 1; 9 8 6; 4 1 0];
[r,c]=size(A)
[row,col]=size(M)
댓글 수: 2
  jessupj
      
 2020년 4월 28일
				
      편집: jessupj
      
 2020년 4월 28일
  
			if you're beholden to using loops:
you can iterate only a portion of the rows, columnns that fit inside the larger matrix, and test whether the submatrix starting  at the appropriate row,col (ie. upper left index) matches the desired matrix. if it matches, store the row,col
match_ul=[]
for rr = 1:(r-row+1)
    for cc = 1:(c-col+1);        
       if isequal( A( rr:(rr+row-1), cc:(cc+col-1) ), M  );
          match_ul = [match_ul; [rr cc] ]; 
       end
    end
end
then you can iterate over the rows of this list to test:
k=1
A( match_ul(k,1)+(0:row-1), match_ul(k,2)+(0:col-1))
ans =
     5     4     1
     9     8     6
     4     1     0
k=2
A( match_ul(k,1)+(0:row-1), match_ul(k,2)+(0:col-1))
ans =
     5     4     1
     9     8     6
     4     1     0
답변 (1개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



