Using isinf and isnan in the same command line?

10 visualizaciones (últimos 30 días)
Jesse
Jesse el 27 de Jul. de 2015
Comentada: Jesse el 27 de Jul. de 2015
Greetings all,
Trying to compute some statistics for a particular data array that has Nan and Inf values scattered throughout.
Right now as an example, for one of the arrays, I have the following line: std_sigma1outs=cellfun(@(a)std(a(~isinf(a))),sigma1outs);
So, two questions. 1.) Can I use isinf and isnan on the same array in the same line? 2.) Reading the help files, I see that I can exclude NaNs in std (omitNaN flag). What about excluding Inf's simultaneously? Can someone give me example with my command line I provided to see how that combination would be coded?
Thanks! -J

Respuesta aceptada

Brendan Hamm
Brendan Hamm el 27 de Jul. de 2015
f = @(a) std(a(~isinf(a) & ~isnan(a)));
% f = @(x) std(a(~isinf(a)),'omitnan');
std_sigma1outs=cellfun(f,sigma1outs);
Either way will work fine, but omitnan is a more recent addition to the statistical functions in base MATLAB, so I provide both. The first version utilizes the 'and' operator:
>> true & true
ans =
1
>> false & false
ans =
0
>> true & false
ans =
0
>> false & true
ans =
0

Más respuestas (1)

Jan
Jan el 27 de Jul. de 2015
~isnan(X) & ~isinf(X) is the same as isfinite(X).
  1 comentario
Jesse
Jesse el 27 de Jul. de 2015
Oh! I didn't know that but thanks for the feedback Jan.

Iniciar sesión para comentar.

Categorías

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