How do I find the submatrix of a matrix?

12 vues (au cours des 30 derniers jours)
Hena Hamid
Hena Hamid le 2 Juin 2016
Modifié(e) : giannit le 15 Août 2021
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 :)

Réponse acceptée

Jos (10584)
Jos (10584) le 2 Juin 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 commentaire
Sloke Shrestha
Sloke Shrestha le 14 Juin 2019
Hello,
Could you explain how this algorithm works?
Thank you!

Connectez-vous pour commenter.

Plus de réponses (1)

giannit
giannit le 15 Août 2021
Modifié(e) : giannit le 15 Août 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

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by