function [rmin,rmax,convg,maxit,detval,ldetflag,eflag,order,iter,options,ndraw,sflag,p,cflag] = sar_parse(info) % PURPOSE: parses input arguments for sar model % --------------------------------------------------- % USAGE: [rmin,rmax,convg,maxit,detval,ldetflag,eflag,order,iter,options] = sar_parse(info) % where info contains the structure variable with inputs % and the outputs are either user-inputs or default values % --------------------------------------------------- % set defaults options = zeros(1,18); % optimization options for fminbnd options(1) = 0; options(2) = 1.e-6; options(14) = 500; eflag = 0; % default to not computing eigenvalues ldetflag = 1; % default to 1999 Pace and Barry MC determinant approx order = 50; % there are parameters used by the MC det approx iter = 30; % defaults based on Pace and Barry recommendation rmin = -1; % use -1,1 rho interval as default rmax = 1; detval = 0; % just a flag convg = 0.0001; maxit = 500; ndraw = 5000; sflag = 0; p = 0; cflag = 0; fields = fieldnames(info); nf = length(fields); if nf > 0 for i=1:nf if strcmp(fields{i},'rmin') rmin = info.rmin; eflag = 0; elseif strcmp(fields{i},'rmax') rmax = info.rmax; eflag = 0; elseif strcmp(fields{i},'p') p = info.p; elseif strcmp(fields{i},'cflag') cflag = info.cflag; elseif strcmp(fields{i},'convg') options(2) = info.convg; elseif strcmp(fields{i},'maxit') options(14) = info.maxit; elseif strcmp(fields{i},'lndet') detval = info.lndet; ldetflag = -1; eflag = 0; rmin = detval(1,1); nr = length(detval); rmax = detval(nr,1); elseif strcmp(fields{i},'lflag') tst = info.lflag; if tst == 0, ldetflag = 0; % compute full lndet, no approximation elseif tst == 1, ldetflag = 1; % use Pace-Barry approximation elseif tst == 2, ldetflag = 2; % use spline interpolation approximation else error('sar: unrecognizable lflag value on input'); end; elseif strcmp(fields{i},'order') order = info.order; elseif strcmp(fields{i},'eig') eflag = info.eig; elseif strcmp(fields{i},'iter') iter = info.iter; elseif strcmp(fields{i},'ndraw') ndraw = info.ndraw; elseif strcmp(fields{i},'sflag') sflag = info.sflag; end; end; else, % the user has input a blank info structure % so we use the defaults end;