Skip to content
Snippets Groups Projects
interpos_nan.m 913 B
function [varargout] = interpos_nan(var1, var2, var3, varargin);
%
% see help interpos for details
%
% pre-exclude non-finite values from either xin or yin before calling interpos
%
nverbose = 1; % warnings
%
if nargin < 3
  error('xin and yin required');
else
  if isscalar(var1)
    xin = var2;
    yin = var3;
    kopt_provided = 1;
  else
    xin = var1;
    yin = var2;
    kopt_provided = 0;
  end
  if nverbose >= 1 && (any(~isfinite(xin)) || any(~isfinite(yin))), warning('NaNs removed by interpos_nan'); end
end

ij = find(isfinite(xin) & isfinite(yin));
if ~isempty(ij)
  xin_eff = xin(ij);
  yin_eff = yin(ij);
  if kopt_provided == 1
    [varargout{1:nargout}] = interpos(var1, xin_eff, yin_eff, varargin{:});
  else
    [varargout{1:nargout}] = interpos(xin_eff, yin_eff, var3, varargin{:});
  end
else
  if nargout > 0
    varargout = cell(nargout,1);
    warning('Only NaNs in xin/yin');
  end
end