Description |
MATCHROW - match elements in the rows of a matrix
TF = MATCHROW(M,S) returns a column vector containing a logical 1 (true)where the rows of M contain (in any order) all the elements of S and 0 (false) otherwise. M and S can be a cell array of strings.
If a element occurs N times in S, than it has to be present at least N times in these rows of M as well.
Examples:
M = [ 1 2 3 4 5 ; 1 2 2 4 3; 1 3 4 4 3 ; 3 2 4 2 5 ; 1 4 3 2 4 ] ;
Q = matchrow(M,[1 2 4]) % -> [1 ; 1 ; 0 ; 0 ; 1] ;
M(Q,:) % -> 1 2 3 4 5
% 1 2 2 4 3
% 1 4 3 2 4
Q = matchrow(M,[1 2 4 4])
M(Q,:) % -> 1 4 3 2 4
Q = matchrow({'a','X','c','Y'; 'a','X','Y','d' ;
'b','X','d','e'},{'X','Y'}) % -> [1 ; 1 ; 0] ;
A = rand(999,999) ;
x = 27 ;
tic
find(matchrow(A,A(x,:))) == x % -> true!
toc
MATCHROW is vectorized and pretty quick ...
version 1.1, may 2008 |