MATLAB: How to find mutual arrays of multiple matrices with different length

matchingmatrixsearching through matrices

Hello!
I have 4 different 2D matrices which are equal in number of columns and different in number of rows. In these matrices there are some rows which have the same value for columns 2 : 4. I mean A(i,2:4)=B(k,2:4)=C(l,2:4)=D(m,2:4). I need to find them and put them in a 3D matrix like E. In this 3D matrix E(:,:,1) are all the mutual rows found in matrix A, for example A(i,: ). Matrix E(:,:,2) are all the mutual rows found in matrix B, for example B(k,: ). Matrix E(:,:,3) are all the mutual rows found in matrix C, for example C(l,: ). Matrix E (:,:, 4) are all the mutual rows found in matrix D, for example D(m,: ). And E(1,2:4,1)= E(1,2:4,2)= E(1,2:4,3)= E(1,2:4,4) and the same for all rows of matrix E.
I started with identifying the matrix with minimum number of rows and finding the matches of column 2:4 in each row in other matrices with an if condition; and if matched putting them in the 3D matrix. It is practical as long as there are just two matrices to compare. Now I have trouble handling these four matrices.
Is there anyone who can help me with this?

Best Answer

I think you could do this with the intersect command.
[AB,ia,ib] = intersect(A(:,2:4),B(:,2:4),'rows')
will give you the common rows of those columns of A and B, with indices to those rows.
Seems like you could either do this with every combination of matrices, or work your way forward then back. A bit tedious, but it's straightforward.