4.8 | 17 ratings Rate this file 130 Downloads (last 30 days) File Size: 7.63 KB File ID: #6837 Version: 1.0

NaN Suite


Jan Gläscher (view profile)

  • 1 file
  • 4.82353


31 Jan 2005 (Updated )

Descriptive Statistics for N-D matrices ignoring NaNs.

| Watch this File

File Information

The collection of functions in the NaN Suite enhances the functionality of the original 'nan'-functions in the Statistics Toolbox for N-D matrices. In addition, the new function nansem.m calculates the standard error of the mean ignoring NaNs.

The NaN Suite functions are used similar to the original functions (e.g. mean, std, var), that is they take a matrix as the first input, and the dimension along which the operation should be computed as the second input. For example, nanmean(A,4) calculates the mean of A along the 4th dimension of A ignoring NaNs.


This file inspired Cpk Capability Index With Na N's, Nantight, and Fractional Octave Band And A, B, C Weighting Filters Df2 T Sos Iir Matlab And Limited Labview.

MATLAB release MATLAB 6.5 (R13)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (23)
17 Nov 2013 SCADA Miner

woops someone already pointed this out. Ignore comment below

Comment only
17 Nov 2013 SCADA Miner

Hi I think there is a bug in nanmedian - i have a dataset (single row), DS, which contains no NaN values, but nanmedian(DS) = NaN. Matlab's normal median(DS)=0.
I think this is the problem - when the median actually equals zero, nanmedian thinks it =nan.

09 Aug 2012 Anna

Anna (view profile)

08 Nov 2011 David

David (view profile)

Just what I was looking for :-)
Haven't looked at why, but seems to run a little slowly.
Thanks :-)

11 Oct 2011 Philip West

The issue Binu found is also present in the nanvar function. where:

NaNsuite y = nanvar(x,dim,flag)
MATLAB y = nanvar(X,flag,dim)

Comment only
11 Apr 2011 William Thielicke

Thanks for the contribution!

14 Mar 2011 Binu

Binu (view profile)

There is a bug in the order by which the Nan suite calls the 'dim' argument. This matters if you have replaced the matlab 'NaN' functions with the Nan suite.

NaNsuite y = nanstd(x,dim,flag)
MATLAB y = nanstd(X,flag,dim)
y = std(X,flag,dim)

Comment only
21 Dec 2010 Thomas Clark

Brilliant, thanks.

I'd give five stars if Andrei's bugfix were included. Will upgrade to 5* if the bug is fixed :)

22 Sep 2010 Thul Dai

Great package, thanks!

Also agreeing on the bug as well as fix found by Andrei Terebilo on 09 Oct 2009. Would be nice if the downloadable package could be fixed.

23 Feb 2010 WP

WP (view profile)

Thank you so much, this is useful!

Comment only
09 Oct 2009 Andrei Terebilo

Little bug here (otherwise great, thanks):

>> nanmedian([0 0 0 0 0 1])
ans =

Just modify line 71:
i = find(y==0);
i = find(s==0);

12 Jan 2009 miguel Ampudia

is there any function to do quintiles ignoring NaN? Thanks!

Comment only
05 Aug 2008 C D

This is a great suite of functions. I did notice the max/min toolbox functions in M7 filtered NaN's from the calculations. However, the other functions did not. So, that's where the NaN suite came in handy.

10 Jul 2008 David Redish

Thank you for fixing this. We have been bitten regularly by Mathworks' strange decision to define nanxyz(all-nans) as 0, which propogates nans incorrectly. This suite has helped us tremendously.

07 May 2008 Pieter Kuppens

Isn't life as simple as this:
nanmean(a) = mean(a(find(~isnan(a))))

Comment only
05 May 2008 anony mouse


03 Feb 2008 Santosh Verma


12 Sep 2007 Uri Merhav

Great minds think alike, I see. I was just about to write out this code myself when I realized someone out there must also be using nan as a non-measurement, and want it ignored while computing average and standard deviation.

Good job.

04 Aug 2006 dgfgf ddf

thanks a lot

08 Aug 2005 Rudolf von Steiger  
31 May 2005 Daphne Weihs

This happened to be just what I needed.

19 Mar 2005 Can Ozan Tan

pretty handy

24 Feb 2005 Julie Golomb

so useful -- thank you!

13 Jun 2005

bug fix in nansum.m

30 Jul 2007

bug fix in nanmedian. The function now returns NaN for an entire vector of NaNs.

Contact us