⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 argterr.m

📁 时间序列分析中很用的源码,书的原名为时间序列分析的小波方法.
💻 M
字号:
function [err] = argterr(func, arg, datatypes, arg_size, mode, msg, return_type)% argterr - Check the data type and size of a function argument.%%****f* wmtsa.utils/argterr%% NAME%   argterr - Check the data type and size of a function argument.%% SYNOPSIS%   [errmsg] = argterr(func, arg, type, [arg_size], [mode])%   [errmsg] = argterr(func, arg, type, [arg_size], [mode], [msg], 'string')%   [errstruct] = argterr(func, arg, type, [arg_size], [mode], [msg], 'struct')%% INPUTS%   * func          -- checked function (string or function handle).%   * arg           -- the argument to check (object)%   * datatypes     -- expected data type(s) of the arg.%                      See verify_datatypes function for possibles datatypes to check.%                      (string or string cell array).%   * arg_size      -- (optional) expected size of array  (integer vector).%   * mode          -- (optional) output display mode (charcter string)%   * msg           -- (optional) message string to be displayed (string).%   * return_type   -- (optional) type of output argument (string).%                       'string' = return error message string (default).%                       'struct' = return error message struct.%% OUTPUTS%   * errmsg        -- error message (string).%   * errstruct     -- error struct with fields:  message, identifier.%% SIDE EFFECTS%   Function call requires a minimum of three input arguments; otherwise error.%% DESCRIPTION%   argterr checks the data type(s) and optionally the size of an argument to a %   function call.  If arg does not have the specified data type(s), an error%   message or error struct is returned.%%   arg may be a single%%   Possible values for 'datatypes' to check include:%   * 'posint'              -- All are positive integers --> integer value(s) > 0.%   * 'int0'                -- All are positive integers plus zero --> integer value(s) >= 0.%   * 'int','integer'       -- All are integers --> any integer value(s).%   * 'num','numeric'       -- All are numeric.%   * 'struct','structure'  -- Is a structure.%   * 'char','character','string' - Is a character string.%   * 'scalar               -- Is a point (size of all dimensions = 1).%   * 'vec','vector'        -- Is a vector (i.e. MxN, with M and/or N = 1).%   * 'nonsingleton','truevector'  -- Is a vector (i.e. MxN with M *or* N = 1).%   * 'row','rowvector'     -- Is a row vector (i.e. M x 1).%   * 'col','columnvector'  -- Is a column vector (i.e. 1 x N).%   * 'finite'              -- All are finite.%   * 'nonsparse'           -- Is a non-sparse matrix.% %   The input argument 'mode' controls the display of diagnostic information%   to the consolue and has possible values:%   * 0 -- silent%   * 1 -- verbose%   The default value is 1 (silent).% % EXAMPLE%   arg = [0 2];%     % arg is an integer.%   err = argterr('myfunction', arg, 'posint')%     % Result: err = 1%   err = argterr('myfunction', arg, 'int', [1 2], '')%     % Result: err = 0%   [err, errmsg] = argterr('myfunction', arg, {'int', 'vector'})%     % Result: err = 0%% NOTES%   argterr is modelled after errargt, which is part of MATLAB wavelet toolkit.%% SEE ALSO%   verify_datatype%% AUTHOR%   Charlie Cornish%% CREATION DATE%   2003-06-22%% COPYRIGHT%   (c) 2003, 2004, 2005 Charles R. Cornish%% CREDITS%   argterr is inspired by the function errargt %   by M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi%   which is part of the MATLAB wavelet toolkit.%% MATLAB VERSION%   7.0%% REVISION%   $Revision: 612 $%%***% $Id: argterr.m 612 2005-10-28 21:42:24Z ccornish $  %% Set Defaultserr = [];valid_mode = [0 1];valid_return_type = {'string', 'struct'};usage_str = ['Usage: [err, errmsg] = ', mfilename, ...               '(func, arg, datatypes, [arg_size], [mode], [msg], [return_type])'];%% Check argumentserror(nargerr(mfilename, nargin, [3:7], nargout, [0:1], ...              1, usage_str, 'struct'));if (ischar(func))  funcname = func;elseif (isa(func, 'function_handle'))  funcname = func2str(func);else  error('WMTSA:nargerr:invalidInputArgumentValue', ...        'func must be a string or function handle');endarg_name = inputname(2);if (iscellstr(datatypes))  % OK - do nothingelseif (ischar(datatypes))  % Convert to character cell array.  datatypes = {datatypes};else  error('WMTSA:invalidArgumentType', ...        ['Argument ''datatypes'' must be a charcter string or charcter cell ' ...         'array.']);endif (~exist('mode', 'var'))  mode = 1;endif (isempty(find(mode == valid_mode)))  err_s.message = ['Invalid value for input argument ', 'mode'];  err_s.identifier = ['WMTSA:nargerr:invalidInputArgumentValue'];  error(err_s);endif (~exist('return_type', 'var') || isempty(return_type))  return_type = 'string';endif (isempty(strmatch(return_type, valid_return_type)))  err_s.message = ['Invalid value for input argument ', 'return_type'];  err_s.identifier = ['WMTSA:nargerr:invalidInputArgumentValue'];  error(err_s);end% Check argument datatypes[tf, errmsg] = verify_datatype(arg, datatypes, arg_name);err_s = [];if (~tf)  err_s.identifier = ['WMTSA:argterr:invalidArgumentDataType'];  err_s.message = errmsg;else  % Check argument dimension sizes  if (exist('arg_size', 'var') && ~isempty(arg_size))    actual_arg_size = size(arg);    if (~isequal(actual_arg_size, arg_size))      err_s.identifier = ['WMTSA:argterr:incorrectArgumentDimensions'];      err_s.message = ['Expected and actual sizes of ', arg_name, ' are not equal'];    end  endendif (~isempty(err_s))  if (mode)    display_errmsg(funcname, err_s.message)  end  if(exist('msg', 'var'))    disp(msg);  end  if (strmatch(return_type, 'string'))    err = err_s.message;  elseif (strmatch(return_type, 'struct'))    err = err_s;  endendreturnfunction display_errmsg(funcname, errmsg)    blank = ' ';  if (~isempty(deblank(funcname)))    msg = ['  ', funcname, ': ', xlate(errmsg)];  else    msg = errmsg;  end    msg_length = length(msg);  banner_length = msg_length + 2;  star_str = '*';  star_str = star_str(:, ones(1, banner_length));  minus_str = '-';  minus_str = minus_str(:, ones(1, banner_length));      disp(blank);  disp(star_str);  disp('ARGUMENT TYPE ERROR ...');  disp(minus_str);  disp(msg);  disp(star_str);  disp(blank);return    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -