MATLAB Answers

Leon
0

mean value of a group of data with NaNs

Leon
さんによって質問されました 2016 年 6 月 27 日
最新アクティビティ the cyclist
さんによって コメントされました 2016 年 6 月 28 日
I have a matrix A with the dimension of 12x360x180. It stores 12 values at each grid of the 360x180. Now I want to calculate the average value at each grid point. The problem is that there are unknown number of NaNs. Sometimes all 12 values are non-NaNs, sometimes all of them are NaNs, sometimes a portion of the 12 values are NaNs.
In this case, how do I estimate the mean values at each point of the grid? I know if there are no NaNs, the calculation is as easy as B = mean(A);
Thank you.

  0 件のコメント

サインイン to comment.

タグ

3 件の回答

the cyclist
回答者: the cyclist
2016 年 6 月 27 日
編集済み: the cyclist
2016 年 6 月 27 日
 採用された回答

If you have the Statistics and Machine Learning Toolbox, you can use the nanmean function, which computes the mean while ignoring NaNs.

  1 件のコメント

Leon
2016 年 6 月 27 日
Many thanks! It works very well!
I happen to have Statistics toolbox on my version of the Matlab :-)

サインイン to comment.


Chris Turnes
回答者: Chris Turnes
2016 年 6 月 27 日

You can also just use the 'omitnan' option in "mean":
A = [1 0 0 1 NaN 1 NaN 0];
M = mean(A,'omitnan')
M =
0.5000

  3 件のコメント

Leon
2016 年 6 月 27 日
Wow, this is refreshing! Thank you for sharing!
Chris Turnes
2016 年 6 月 27 日
By the way, other related functions support this input argument as well: sum, var, std, median, and max and min (max and min have 'omitnan' as the default option). The mov* functions (if you have R2016a or newer) also support this argument.
the cyclist
2016 年 6 月 28 日
I was unaware of this option! Very nice. Please accept my upvote.

サインイン to comment.


the cyclist
回答者: the cyclist
2016 年 6 月 27 日

If you do not have that Statistics and Machine Learning Toolbox, this should work:
notNan = not(isnan(A));
B = zeros(size(A));
B(notNan) = A(notNan);
sum(B)./sum(notNan)
You can do the sum over different dimensions, as required.

  1 件のコメント

Leon
2016 年 6 月 27 日
Brilliant! Good to have this alternative method for folks who do not have the Statistic toolbox and come to this page through search engine.

サインイン to comment.



Translated by