MATLAB Answers

finding mismatched elements ~ismember

Asked by Lalit Patil on 25 Dec 2012
Accepted Answer by Matt J
 A = [1 2 3;2 3 4;3 4 5;4 5 6;5 6 7;6 7 8;7 8 9]
 B = [2 3 4;6 7 8]
 flag = ~ismember(A,B,'rows');
 index = find(flag);
 q = A(index(flag))

The error is

 ??? Index exceeds matrix dimensions.

and The index finds only first elements of each row. The remaining two should also find it.. So, how to do it.?

  2 Comments

Matt J
on 25 Dec 2012

The index finds only first elements of each row. The remaining two should also find it.

This is not clear. Write explicitly what you want "index" and "q" to be.

Andrei Bobrov
on 25 Dec 2012
q = A(flag,:);

or

q = A(index,:);

Products

No products are associated with this question.

2 Answers

Matt J
Answer by Matt J
on 25 Dec 2012
 Accepted answer
q = setdiff(A,B,'rows')

  0 Comments


Answer by Walter Roberson
on 25 Dec 2012

Are these integers or numbers with fractions? If they are numbers with fractions then you cannot use ismember() in most cases.

http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F

  0 Comments


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today