Using isinf and isnan in the same command line?

11 Ansichten (letzte 30 Tage)
Jesse
Jesse am 27 Jul. 2015
Kommentiert: Jesse am 27 Jul. 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

Akzeptierte Antwort

Brendan Hamm
Brendan Hamm am 27 Jul. 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

Weitere Antworten (1)

Jan
Jan am 27 Jul. 2015
~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

Mehr zu Numeric Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by