How do I find the submatrix of a matrix?

6 ビュー (過去 30 日間)
Hena Hamid
Hena Hamid 2016 年 6 月 2 日
編集済み: giannit 2021 年 8 月 15 日
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 :)

採用された回答

Jos (10584)
Jos (10584) 2016 年 6 月 2 日
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 件のコメント
Sloke Shrestha
Sloke Shrestha 2019 年 6 月 14 日
Hello,
Could you explain how this algorithm works?
Thank you!

サインインしてコメントする。

その他の回答 (1 件)

giannit
giannit 2021 年 8 月 15 日
編集済み: giannit 2021 年 8 月 15 日
[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

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by