# Finding columns that contain both integers and NaN

1 visualización (últimos 30 días)
Ahmed Hamed el 4 de Feb. de 2016
Comentada: the cyclist el 4 de Feb. de 2016
I have a matrix that contain Numerical values (float) and Categorical values (Int)
as
A = 1 NaN 2.2 3.2 4
NaN 7.9 5.1 NaN 5
3 5.5 NaN 4.1 NaN
and I'd like to split it into matrices;
one contains the Int values and the other contains the float values as
it = 1 4
NaN 5
3 NaN
and
flt = NaN 2.2 3.2
7.9 5.1 NaN
5.5 NaN 4.1
i use the following code
int_cols = all( round(A)==A, 1 ); %// logical indexing into integer columns
it = A(:,int_cols);
flt = A(:,~int_cols);
However, NaN isn't equal NaN so it appears in the flt matrix and it = [].
Are there any function that can help?
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Respuestas (2)

David Young el 4 de Feb. de 2016
Yes, isnan(x) does what x == NaN would do if NaNs were equal to each other.
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

the cyclist el 4 de Feb. de 2016
int_cols = all( round(A)==A | isnan(A), 1 ); %// logical indexing into integer columns
it = A(:,int_cols)
flt = A(:,~int_cols)
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
the cyclist el 4 de Feb. de 2016
If the entries in A are have been computed in prior operations, you might also want to guard against floating point inaccuracies, such as the value "4" actually being 4.0000000000001. You could check for equality to within a specific tolerance, for example.

Iniciar sesión para comentar.

### Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by