Matlab与不同位置的NaN值进行比较

时间:2015-07-08 15:02:32

标签: matlab matrix nan

我正在尝试将两个向量与不同位置的NaN值进行比较。 我需要考虑这些向量相等 例如

a = [NaN 2 3 4];
b = [1 NaN 3 4];

我试过

isequalwithequalnans(a,b)

但它返回零,因为数组中NaN个元素的位置很重要。 有没有办法做到这一点

1 个答案:

答案 0 :(得分:2)

方法1

获取logical index,其中包含所有向量都不包含NaN的位置,并仅比较这些条目:

ind = ~(isnan(a)|isnan(b)); 
result = all(a(ind)==b(ind));

方法2

与数字值比较时,使用maxmin忽略NaN的事实:

result = isequaln(max(a,b), min(a,b));

请注意,isequaln用于将NaN视为相等。如果ab在同一位置包含NaN,则必须执行此操作。