function params = parse_myparams (params_default, arglist) # Use: # params = parse_myparams (struct("A", 1, "B", 2), {"B", 42}) # Returns : params = struct("A", 1, "B", 42) # % Parse parameters params = params_default; names = fieldnames(params); for k=1:2:length(arglist)-1, found = false; for n=1:length(names), if strcmpi(arglist{k}, names{n}) params.(names{n}) = arglist{k+1}; found = true; end end if ~found error("Not found!"); endif end if nargout == 0 print_parameters(params); endif function print_parameters(params) align = 32; names = fieldnames(params); for n=1:length(names), fprintf('%s', names{n}); remain = align - length(names{n}); if remain < 0 error('Invalid variable length!'); else for j=1:remain fprintf(' '); end fprintf('= %g\n', params.(names{n})); end end endfunction endfunction