meannan.m
author A.M. Thurnherr <ant@ldeo.columbia.edu>
Tue, 18 Jan 2011 18:03:21 -0500
changeset 7 5039049353a1
parent 0 0a450563f904
permissions -rw-r--r--
after DIMES UK2

function [m]=meannan(data);
% function [m]=meannan(data);
%
% calculates mean-values similar to built-in 'mean' 
% but takes NaN's into account
% by removing them and calculating the mean of the rest

% Gerd Krahmann, IfM Kiel, Mar 1993
% last change  4 Jun 1993

b=isnan(data);
a=sum(b(:));

if (a>0)

  [s1,s2]=size(data);

  if ( s1==1 ) + ( s2==1 )

    data=data(~b);
    if isempty(data)
      m=nan;
    else
      m=mean(data);
    end

  else

    m=zeros(1,s2);
    for i=1:s2

      m(i)=meannan(data(:,i));

    end

  end

elseif length(data)>0

  m=mean(data);

else
 
 m=NaN;

end