MATLAB: Extracting a matrix by row and column from a large matrix

matrix

I have a matrix like
1 1 1 2000
1 1 1 2000
1 1 1 2000
2 2 2 3000
2 2 2 3000
2 2 2 3000
3 3 3 5000
3 3 3 5000
3 3 3 5000
I have another matrix
2 2 2
2 2 2
2 2 2
I want a matrix from this matrix large matrix given above
2 2 2 3000
2 2 2 3000
2 2 2 3000
Can anyone help to extract the values through matlab.I am trying throuh ismember but not working.

Best Answer

  • I changed your example matrix a bit to make sure it ignores partial pattern matches.
    m = [1 1 1 2000
    1 1 1 2000
    1 1 1 2000
    2 2 2 3000
    2 2 2 3000
    2 2 2 3000
    3 3 3 5000
    3 3 3 5000
    3 3 3 5000
    2 2 2 6000
    2 2 2 6000
    9 9 9 7000];
    s = [2 2 2
    2 2 2
    2 2 2];
    [~, rowIdx] = intersect(m,s);
    mSubset = m(rowIdx+(0:size(s,1)-1),:);
    Result
    mSubset =
    2 2 2 3000
    2 2 2 3000
    2 2 2 3000
    Note that if there is more than 1 match it will only return the first subset match.