www.gusucode.com > EasyKrig_V3.0工具箱matlab源码程序 > EasyKrig_V3.0/bin/mean_nan.m

    function    pmean=mean_nan(A,k)
%% function    pmean=mean_nan(A,k)
%% computes the mean value which ignores all nan's 
%% if A is an 1D array, k is not necessary, if A is a matrix
%% k is optional. Without k or k = 1, A is averaged over column,
%% and k = 2, average is over rows
%%
% Author: Jim Ledwell, 10/97 Woods Hole Oceanographic Institution

D=size(A);
if D(1) == 1 | D(2) == 1						% 1-D array
   [indx]=find(~isnan(A));
   if ~isempty(indx)
      pmean=mean(A(indx));
   else
      pmean=nan;
   end
else
   if nargin == 1
     k=1;				% default direction: average over each colume
  end
  if k == 1
    for i=1:D(2)
       [indx]=find(~isnan(A(:,i)));
       if ~isempty(indx)
          pmean(i)=mean(A(indx,i));
       else
          pmean(i)=nan;
       end
    end
  else
    for i=1:D(1)
       [indx]=find(~isnan(A(i,:)));
       if ~isempty(indx)
          pmean(i)=mean(A(i,indx));
       else
          pmean(i)=nan;
       end
   end
   pmean=pmean(:);
  end
end