Effacer les filtres
Effacer les filtres

Using isinf and isnan in the same command line?

3 vues (au cours des 30 derniers jours)
Jesse
Jesse le 27 Juil 2015
Commenté : Jesse le 27 Juil 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

Réponse acceptée

Brendan Hamm
Brendan Hamm le 27 Juil 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
  1 commentaire
Jesse
Jesse le 27 Juil 2015
Great thanks Brendan!
-Jesse

Connectez-vous pour commenter.

Plus de réponses (1)

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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Numeric Types dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by