diff --git a/matlab/interpos_nan.m b/matlab/interpos_nan.m new file mode 100644 index 0000000000000000000000000000000000000000..396b06b3ce1c00e2f9d89a07d9900530c8afed24 --- /dev/null +++ b/matlab/interpos_nan.m @@ -0,0 +1,56 @@ +function [varargout] = interpos_nan(var1, var2, var3, varargin); +% +% see help interpos for details +% +% pre-exclude NaNs 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(isnan(xin)) || any(isnan(yin))), warning('NaNs removed by interpos_nan'); end +end + +ij = find(~isnan(xin) & ~isnan(yin)); +if ~isempty(ij) + xin_eff = xin(ij); + yin_eff = yin(ij); + if kopt_provided == 1 + switch nargout + case 1 + [varargout{1}] = interpos(var1, xin_eff, yin_eff, varargin{:}); + case 2 + [varargout{1},varargout{2}] = interpos(var1, xin_eff, yin_eff, varargin{:}); + case 3 + [varargout{1},varargout{2},varargout{3}] = interpos(var1, xin_eff, yin_eff, varargin{:}); + otherwise + [varargout{1},varargout{2},varargout{3},varargout{4}] = interpos(var1, xin_eff, yin_eff, varargin{:}); + end + else + switch nargout + case 1 + [varargout{1}] = interpos(xin_eff, yin_eff, var3, varargin{:}); + case 2 + [varargout{1},varargout{2}] = interpos(xin_eff, yin_eff, var3, varargin{:}); + case 3 + [varargout{1},varargout{2},varargout{3}] = interpos(xin_eff, yin_eff, var3, varargin{:}); + otherwise + [varargout{1},varargout{2},varargout{3},varargout{4}] = interpos(xin_eff, yin_eff, var3, varargin{:}); + end + end +else + if nargout > 0 + varargout = cell(nargout,1); + warning('Only NaNs in xin/yin'); + end +end diff --git a/matlab/tests_matlab.m b/matlab/tests_matlab.m index 1e976753384bc85c1278424ef9ff2f11be1cc881..a2055fcc858b9e117b3461abf2aef6c3e23f8dd1 100644 --- a/matlab/tests_matlab.m +++ b/matlab/tests_matlab.m @@ -2,12 +2,7 @@ function tests_matlab(test_case) try fprintf('\n Running test file: %s\n',mfilename('fullpath')); fprintf(' Time: %s\n',datestr(now)); - which interpos - which interpos_nan - ls /home/sauter/interpos/matlab - !uname -a - passed = true - %passed = run_gdat_tests(test_case); % call to your test script here, with optional test_case input + passed = run_gdat_tests(test_case); % call to your test script here, with optional test_case input exit_code = int32(~passed); % convert to bash shell convention catch ME disp(getReport(ME))