如何避免多次使用'isnan'过滤不一致的数据集?

时间:2014-03-25 10:30:03

标签: arrays matlab datetime numbers complex-numbers

我有两个对应的(具有关系且具有相同维度)数据集:

  1. Time
  2. Salinity
  3. 盐度数据集中的一些数据是NaN。

    我可以通过以下方式删除NaN值:

     Salinity_new=Salinity(~isnan(Salinity))
    

    但它不再对应Time数据集。

    如何删除相应的时间?

    由于

2 个答案:

答案 0 :(得分:2)

另一种解决方案如下:

indexes = find(isnan(Salinity)==1);
Salinity(indexes) = []; 
Time(indexes) = []

通过这种方式,您可以消除向量中的非数值。

答案 1 :(得分:1)

Diavakar和patrik的评论是正确的。总结并回答这个问题,还有一些评论。

mask = isfinite(Salinity) 
[Time,Salinity] = deal( Time(mask), Salinity(mask) )

isfinite~isnan相同 - 但只需减少一个计算步骤,其速度提高约50-90%。通过引入mask,您可以避免双重使用isfinitedeal只会为您节省一些空间。