Can we sum a series of values,even some of them are "NaN"?If i want to do it,how can i do?

1 view (last 30 days)
I get a series answer of optimal problem in several times,and i want to sum of them and average them,however, some of them are "NaN",can i or how to write a code to ignore those "NaN" and sum the others which is not "NaN" ?
The version of matlab is 2015a

Accepted Answer

Walter Roberson
Walter Roberson on 26 Mar 2019
You did not indicate your MATLAB version.
For a couple of years now, you have been able to write sum(TheArray, 'omitnan') .
Before that, the easiest approach was to use the Statistics toolbox nansum()
mean() these days also has 'omitnan' flag, and in older versions the Stats tool was nanmean()
  2 Comments
yang-En Hsiao
yang-En Hsiao on 26 Mar 2019
Edited: yang-En Hsiao on 26 Mar 2019
Thanks for information,i have edited the question,if there is a vector call A
A=[1 2 3 4 5 6 7 8 9 NaN]
ANSwess=nansum(A)
The window will show me ANSwess=45,but why when i write the code as
A=[1 2 3 4 5 6 7 8 9 NaN]
ANSwess=nansum(A(1:9)+A(end))
The window will show me ANSwess=45,same result as sum(A)?
Walter Roberson
Walter Roberson on 26 Mar 2019
That last line returns 0 for me. A(end) is Nan, and adding nan to each A(1:9) entry gives nan for each result, so you would be applying nansum to an all-nan vector, and the result of that is going to be 0.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!