Using isinf and isnan in the same command line?

10 次查看(过去 30 天)
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

采纳的回答

Brendan Hamm
Brendan Hamm 2015-7-27
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 个)

Jan
Jan 2015-7-27
~isnan(X) & ~isinf(X) is the same as isfinite(X).

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by