How do I find the submatrix of a matrix?

16 views (last 30 days)
I'm new to Matlab so bear with me.
If I have a 2D matrix A and a submatrix B of A. How can I check if B is a submatrix of A?
I basically want to search for matrix B in A.
An example with code would be appreciated :)

Accepted Answer

Jos (10584)
Jos (10584) on 2 Jun 2016
Here is a simple for-loop that would work for 2D cases
A = magic(6)
B = A(2:3,4:5)
% engine
szA = size(A) ;
szB = size(B) ;
szS = szA - szB + 1
tf = false(szA) ;
for r = 1:szS(1)
for c = 1:szS(2)
tf(r,c) = isequal(A(r:r+szB(1)-1,c:c+szB(2)-1),B) ;
end
end
[rout,cout] = find(tf)
  1 Comment
Sloke Shrestha
Sloke Shrestha on 14 Jun 2019
Hello,
Could you explain how this algorithm works?
Thank you!

Sign in to comment.

More Answers (1)

giannit
giannit on 15 Aug 2021
Edited: giannit on 15 Aug 2021
[R,P] = ismember(B,A)
if R contains all ones then B is a submatrix of A and P contains the indices of A where B is located, ie A(P) = B

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!