arrays - how - ¿Cómo evitar el uso múltiple de ''isnan'' para filtrar datasets inconscientes?
numerical derivative matlab (2)
Tengo dos conjuntos de datos correspondientes (tiene una relación y tiene la misma dimensión):
Time
-
Salinity
Algunos datos en el conjunto de datos de salinidad son NaN.
Puedo eliminar el valor de NaN por:
Salinity_new=Salinity(~isnan(Salinity))
Pero ya no se corresponderá con el conjunto de datos Time
.
¿Cómo puedo eliminar el tiempo correspondiente también?
Gracias
Los comentarios de Diavakar y patrik son correctos. Para resumir y obtener respuesta a esta pregunta, algunos comentarios adicionales.
mask = isfinite(Salinity)
[Time,Salinity] = deal( Time(mask), Salinity(mask) )
isfinite
es lo mismo que ~isnan
, pero con un paso de cálculo menos, es aproximadamente 50-90% más rápido. Al introducir una mask
, estás evitando el doble uso de isfinite
. deal
solo te ahorra algo de espacio.
Otra solución es la siguiente:
indexes = find(isnan(Salinity)==1);
Salinity(indexes) = [];
Time(indexes) = []
De esta forma, eliminas el valor no numérico de tus vectores.