Delete NaN values in matrix, but the shape changes

1 visualización (últimos 30 días)
AmH
AmH el 1 de Mzo. de 2017
Comentada: KSSV el 1 de Mzo. de 2017
I want to delete NaN values in a matrix that is 320 x 360, which a managed to do by first making a logical
m=isnan(data)
data(m)=[]
but then the matrix data change to 1 x 5890, I don't understand why this is happening ? How do I get the data to have the same number of rows and columns as the original matrix ?
  1 comentario
Adam
Adam el 1 de Mzo. de 2017
What do you expect to be there in place of the NaNs? You can't have emptiness in a numeric array so when you remove values it loses its structure and becomes a 1d array instead.

Iniciar sesión para comentar.

Respuestas (1)

KSSV
KSSV el 1 de Mzo. de 2017
When you try to remove the Nan's the number of elements in the matrix changes, so MATLAB will put them into array. If you want the same dimension, don'e remove the NaN's, replace them with 0's.
k = rand(3,3) ;
% put nans
k(3,2) = NaN ;
k(3,3) = NaN ;
k(1,3) = NaN ;
% remove nanas
idx = isnan(k) ;
k(idx) = 0
  3 comentarios
Adam
Adam el 1 de Mzo. de 2017
nnz( ~isnan( k ) );
KSSV
KSSV el 1 de Mzo. de 2017
If you know the coordinates of your region of interest use inpolygon to know the points which lie in, on, out side the region.

Iniciar sesión para comentar.

Categorías

Más información sobre Operators and Elementary Operations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by