COMPLEX overloads the complex operator for Analysis objects. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: COMPLEX overloads the complex operator for Analysis objects. A3 = COMPLEX(A1,A2) returns the complex result A + Bi, where A and B are identically sized real arrays. CALL: ao_out = complex(a1, a2); The following call returns a parameter list object that contains the default parameter values: >> pl = imag(ao, 'Params') The following call returns a string that contains the routine CVS version: >> version = imag(ao,'Version') The following call returns a string that contains the routine category: >> category = imag(ao,'Category') VERSION: $Id: complex.m,v 1.8 2008/02/12 08:31:45 mauro Exp $ HISTORY: 20-08-2007 Diepholz Creation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function ao_out = complex(a1, a2) 0002 % COMPLEX overloads the complex operator for Analysis objects. 0003 % 0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0005 % 0006 % DESCRIPTION: COMPLEX overloads the complex operator for Analysis objects. 0007 % A3 = COMPLEX(A1,A2) returns the complex result A + Bi, where A and B 0008 % are identically sized real arrays. 0009 % 0010 % CALL: ao_out = complex(a1, a2); 0011 % 0012 % The following call returns a parameter list object that contains the 0013 % default parameter values: 0014 % 0015 % >> pl = imag(ao, 'Params') 0016 % 0017 % The following call returns a string that contains the routine CVS version: 0018 % 0019 % >> version = imag(ao,'Version') 0020 % 0021 % The following call returns a string that contains the routine category: 0022 % 0023 % >> category = imag(ao,'Category') 0024 % 0025 % VERSION: $Id: complex.m,v 1.8 2008/02/12 08:31:45 mauro Exp $ 0026 % 0027 % HISTORY: 20-08-2007 Diepholz 0028 % Creation 0029 % 0030 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0031 0032 ALGONAME = mfilename; 0033 VERSION = '$Id: complex.m,v 1.8 2008/02/12 08:31:45 mauro Exp $'; 0034 CATEGORY = 'Operator'; 0035 0036 % Check if this is a call for parameters 0037 if nargin == 2 0038 if isa(a1, 'ao') && ischar(a2) 0039 in = char(a2); 0040 if strcmp(in, 'Params') 0041 ao_out = plist(); 0042 return 0043 elseif strcmp(in, 'Version') 0044 ao_out = VERSION; 0045 return 0046 elseif strcmp(in, 'Category') 0047 ao_out = CATEGORY; 0048 return 0049 end 0050 end 0051 end 0052 0053 % Check for the same data. 0054 if ~strcmp(class(a1.data), class(a2.data)) 0055 error ('### The data class must be the same. (%s <-> %s)', ... 0056 class(a1.data), class(a2.data)); 0057 end 0058 0059 % Check for the same sampe rate 0060 fields = fieldnames(a1.data); 0061 if ismember('fs', fields) 0062 if a1.data.fs ~= a2.data.fs 0063 error('### The sample rate is not the same. Please resaple one of the AO''s'); 0064 end 0065 end 0066 0067 % Check the length of the AO's 0068 [x1,y1] = get_xy_values(a1.data); 0069 [x2,y2] = get_xy_values(a2.data); 0070 if length(x1) ~= length(x2) || length(y1) ~= length(y2) 0071 error ('### The length of the data vectors must be the same.') 0072 end 0073 0074 complex_x = x1; 0075 complex_y = complex(y1, y2); 0076 0077 cmd = sprintf('data = %s(complex_x, complex_y);', class(a1.data)); 0078 eval(cmd); 0079 0080 data = set(data, 'name', 'complex'); 0081 data = set(data, 'xunits', a1.data.xunits); 0082 data = set(data, 'yunits', a1.data.yunits); 0083 0084 h = history(ALGONAME, VERSION, plist(), [a1.hist a2.hist]); 0085 h = set(h, 'invars', {inputname(1), inputname(2)}); 0086 0087 ao_out = ao(data, h); 0088 ao_out = setnh(ao_out, 'name', sprintf('complex(%s, %s)', inputname(1), inputname(2))); 0089 0090 0091 0092 0093 0094 0095 0096 0097