是不是为NaN工作

use*_*459 4 matlab nan

如果我做

ismember([NaN 0 3 2],[0 NaN])
Run Code Online (Sandbox Code Playgroud)

那么输出就是

0     1     0     0
Run Code Online (Sandbox Code Playgroud)

我明显期待的地方

1     1     0     0
Run Code Online (Sandbox Code Playgroud)

我试过了

ismember(['3' 0 3 2],[0 '3'])
Run Code Online (Sandbox Code Playgroud)

那么输出就是

1     1     0     0
Run Code Online (Sandbox Code Playgroud)

我怎样才能为NaN工作?

Tro*_*kin 11

遵循惯例NaN ~= NaN,ismember 将NaN值视为不同.适用于您的特定用例的快速垫片将是:

>> 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
Run Code Online (Sandbox Code Playgroud)