Using isinf and isnan in the same command line?

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

 Akzeptierte Antwort

Brendan Hamm
Brendan Hamm am 27 Jul. 2015

0 Stimmen

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

Weitere Antworten (1)

Jan
Jan am 27 Jul. 2015

0 Stimmen

~isnan(X) & ~isinf(X) is the same as isfinite(X).

1 Kommentar

Jesse
Jesse am 27 Jul. 2015
Oh! I didn't know that but thanks for the feedback Jan.

Melden Sie sich an, um zu kommentieren.

Kategorien

Gefragt:

am 27 Jul. 2015

Kommentiert:

am 27 Jul. 2015

Community Treasure Hunt

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

Start Hunting!

Translated by