Ismember does not work for NaN

If i do

ismember([NaN 0 3 2],[0 NaN])

then exit

0     1     0     0

where I obviously expected

1     1     0     0

I tried

ismember(['3' 0 3 2],[0 '3'])

then exit

1     1     0     0

How can I do ismember work for NaN?

+4
source share
1 answer

Following the agreement that NaN ~= NaN, ismember considers NaN values ​​as different . A quick pad that works for your use case will be:

>> ismembernan = @(a,b) ismember(a,b) | (isnan(a) & any(isnan(b)));
>> a = [NaN 0 3 2];
>> b = [0 NaN];
>> ismembernan(a,b)
ans =
     1     1     0     0
+11
source

All Articles