ABS overloads the Absolute value operator for Analysis objects. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: ABS overloads the Absolute value operator for Analysis objects. CALL: ao_out = abs(ao_in); ao_out = abs(ao_in, pl); POSSIBLE VALUES: ao_in = [ao2 ao3] ao_in = ao_vector ao_in = ao_matrix PARAMETER LIST: <key> <value> <description> tsdata fsdata xydata 'xdata' 't' 'f' 'x' compute the xdata 'ydata' 'x' 'xx' 'y' compute the ydata The following call returns a parameter list object that contains the default parameter values: >> pl = abs(ao, 'Params') The following call returns a string that contains the routine CVS version: >> version = abs(ao,'Version') The following call returns a string that contains the routine category: >> category = abs(ao,'Category') HISTORY: 12-03-07 M Hewitson Creation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function ao_out = abs(varargin) 0002 % ABS overloads the Absolute value operator for Analysis objects. 0003 % 0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0005 % 0006 % DESCRIPTION: ABS overloads the Absolute value operator for Analysis objects. 0007 % 0008 % CALL: ao_out = abs(ao_in); 0009 % ao_out = abs(ao_in, pl); 0010 % 0011 % POSSIBLE VALUES: ao_in = [ao2 ao3] 0012 % ao_in = ao_vector 0013 % ao_in = ao_matrix 0014 % 0015 % PARAMETER LIST: <key> <value> <description> 0016 % tsdata fsdata xydata 0017 % 'xdata' 't' 'f' 'x' compute the xdata 0018 % 'ydata' 'x' 'xx' 'y' compute the ydata 0019 % 0020 % The following call returns a parameter list object that contains the 0021 % default parameter values: 0022 % 0023 % >> pl = abs(ao, 'Params') 0024 % 0025 % The following call returns a string that contains the routine CVS version: 0026 % 0027 % >> version = abs(ao,'Version') 0028 % 0029 % The following call returns a string that contains the routine category: 0030 % 0031 % >> category = abs(ao,'Category') 0032 % 0033 % HISTORY: 12-03-07 M Hewitson 0034 % Creation 0035 % 0036 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0037 0038 VERSION = '$Id: abs.html,v 1.14 2008/03/31 10:27:33 hewitson Exp $'; 0039 CATEGORY = 'Operator'; 0040 0041 ao_out = []; 0042 0043 %% Check if this is a call for parameters 0044 if nargin == 2 0045 if isa(varargin{1}, 'ao') && ischar(varargin{2}) 0046 in = char(varargin{2}); 0047 if strcmp(in, 'Params') 0048 ao_out = getDefaultPL(); 0049 return 0050 elseif strcmp(in, 'Version') 0051 ao_out = VERSION; 0052 return 0053 elseif strcmp(in, 'Category') 0054 ao_out = CATEGORY; 0055 return 0056 end 0057 end 0058 end 0059 0060 %% Collect input ao's, plist's and ao variable names 0061 in_names = {}; 0062 for ii = 1:nargin 0063 in_names{end+1} = inputname(ii); 0064 end 0065 0066 [aos, pls, invars] = collect_inputs(varargin, in_names); 0067 0068 if ~isempty (pls) 0069 pls = combine(pls); 0070 end 0071 0072 %% go through analysis objects 0073 for j=1:numel(aos) 0074 a = aos(j); 0075 0076 [h, abs_data] = single_operation(a.data, 'abs', pls); 0077 0078 %% Set the x, y-units to their old values (without abs()) 0079 abs_data = set(abs_data, 'xunits', a.data.xunits); 0080 abs_data = set(abs_data, 'yunits', a.data.yunits); 0081 %% It is nicer with the absolute signs | | than abs () 0082 abs_data = set(abs_data, 'name', sprintf ('| %s |',a.data.name)); 0083 0084 %% Add the history from the ao object to the history 0085 h = set(h, 'inhists', [a.hist]); 0086 0087 %% Set the var_name to the history 0088 h = set(h, 'invars', cellstr(invars{j})); 0089 0090 %% create a new analysis objects 0091 new_ao = ao (abs_data, h); 0092 new_ao = setnh(new_ao, 'name', sprintf('|%s|',invars{j}) ); 0093 0094 ao_out = [ao_out new_ao]; 0095 0096 end 0097 0098 % Reshape the ouput to the same size of the input 0099 ao_out = reshape(ao_out, size(aos)); 0100 0101 0102 %% Get default params 0103 function pl_default = getDefaultPL() 0104 0105 pl_default = plist([param('xdata', '') 0106 param('ydata', '')]); 0107 0108 % END