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

 채택된 답변

Brendan Hamm
Brendan Hamm 2015년 7월 27일

0 개 추천

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일

0 개 추천

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

댓글 수: 1

Jesse
Jesse 2015년 7월 27일
Oh! I didn't know that but thanks for the feedback Jan.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Numeric Types에 대해 자세히 알아보기

태그

질문:

2015년 7월 27일

댓글:

2015년 7월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by