Comparing cell arrays for same values?

3 views (last 30 days)
Ok so - This may be a little hard to explain to forgive me.
I have a selection of array of letters (lets call is matrix X), e.g
A B C; A C D; A D G; A E H; Q N J; A G K; A H I; A I W;
Defined as a 8x3 cell (in this case). I also have another array (matrix Y) (11x2 cell) of similar format (populated with letters).
What I want to do is write some code which looks through each row of matrix X in turn and returns a "1" if the row contains both letters in any row of matrix Y and a "0" if not.
For example, matrix X is as above and matrix Y is,
A F; E D; E C; J I; J H; M L; V T; V U; Q J; Q O; Q P;
In this case, the 5th row of matrix X would agree with the statement as "Q" and "N" are present (as in the 9th row of matrix Y). The other rows in X are all fine and would return "1".
I hope that makes sense - happy to explain further if necc.
Best,
Craig
  2 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 10 Sep 2013
You mean Q and J in the fifth row of X
Craig
Craig on 10 Sep 2013
Apologies - yes. thanks!

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 10 Sep 2013
Edited: Azzi Abdelmalek on 10 Sep 2013
Edit
X={'A' 'B' 'C'
'A' 'C' 'D'
'A' 'D' 'G'
'A' 'E' 'H'
'Q' 'N' 'J'
'A' 'G' 'K'
'A' 'H' 'I'
'A' 'I' 'W'}
Y={ 'A' 'F'
'E' 'D'
'E' 'C'
'J' 'I'
'J' 'H'
'M' 'L'
'V' 'T'
'V' 'U'
'Q' 'J'
'Q' 'O'
'Q' 'P'}
n=size(X,1);
out=zeros(n,1)
for k=1:n
out(k,1)=any(all(ismember(Y,X(k,:)),2))
end
  1 Comment
Craig
Craig on 10 Sep 2013
That works nicely thanks. Think I have a few other tweaks to make to my overall project before I am done but this is very useful so thanks again!

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!