remove Nan from a row vector using if statement only

9 visualizaciones (últimos 30 días)
swetha S
swetha S el 6 de Jul. de 2019
Comentada: madhan ravi el 6 de Jul. de 2019
I have a row vector. Ch (1,1155). I want to remove columns that have NaN.
for k=1:122
p=1;
for m=1:1155
if( (ch(1,m) ~= NaN )
Datan(1,p)=ch(1,m);
p=p+1
end
end
end
But the above codes doesn't remove NAN
  1 comentario
Rik
Rik el 6 de Jul. de 2019
As a side note: your outer loop does not affect the rest of your code, so it is useless.

Iniciar sesión para comentar.

Respuesta aceptada

madhan ravi
madhan ravi el 6 de Jul. de 2019
isnan() would suffice your need
doc isnan
  2 comentarios
Guillaume
Guillaume el 6 de Jul. de 2019
It's more than suffice, it's necessary!
madhan ravi
madhan ravi el 6 de Jul. de 2019
True , should have used "should" instead of "would" , thank you for the pointer :)

Iniciar sesión para comentar.

Más respuestas (2)

Guillaume
Guillaume el 6 de Jul. de 2019
But the above codes doesn't remove NAN
One important property of NaN is that NaN is never equal to anything, including NaN. Hence NaN == NaN is always false, and NaN ~= NaN is always true.So, yes your code can't work.
As others have said, you have to use isNaN to check if a number is NaN. As usual in matlab, isNaN works on matrices too, so there's no point in using a loop:
datan = ch(~isnan(ch)); %as long as ch is a vector
It's unclear what the purpose of the k loop is in a code.
Finally, if you are hell-bent on using a loop, you should never hard code the end of a loop when you're looping over the elements of a matrix/vector. Always ask matlab how many elements there are. That way if the number of elements in the matrix/vector changes, you don't have to edit your code:
for m = 1:numel(ch) %iterate over the elements of ch

Stephan
Stephan el 6 de Jul. de 2019
Editada: Stephan el 6 de Jul. de 2019
Datan=ch(~isnan(ch));

Categorías

Más información sobre Logical 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