0001 function y = nan_mean(x) 0002 if isempty(x) % Check for empty input. 0003 y = NaN; 0004 return 0005 end 0006 0007 % Replace NaNs with zeros. 0008 nans = isnan(x); 0009 i = find(nans); 0010 x(i) = zeros(size(i)); 0011 0012 if min(size(x))==1, 0013 count = length(x)-sum(nans); 0014 else 0015 count = size(x,1)-sum(nans); 0016 end 0017 0018 % Protect against a column of all NaNs 0019 i = find(count==0); 0020 count(i) = ones(size(i)); 0021 y = sum(x)./count; 0022 y(i) = i + NaN;