0001 function ao_out = complex(a1, a2)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 ALGONAME = mfilename;
0025 VERSION = '$Id: complex.m,v 1.2 2007/08/21 11:30:43 ingo Exp $';
0026
0027
0028 if nargin == 2
0029 if isa(a1, 'ao') && ischar(a2)
0030 in = char(a2);
0031 if strcmp(in, 'Params')
0032 ao_out = getDefaultPL();
0033 return
0034 end
0035 end
0036 end
0037
0038
0039 if ~strcmp(class(a1.data), class(a2.data))
0040 error ('### The data class must be the same. (%s <-> %s)', ...
0041 class(a1.data), class(a2.data));
0042 end
0043
0044
0045 fields = fieldnames(a1.data);
0046 if ismember('fs', fields)
0047 if a1.data.fs ~= a2.data.fs
0048 error('### The sample rate is not the same. Please resaple one of the AO''s');
0049 end
0050 end
0051
0052
0053 [x1,y1] = get_xy_axis(a1.data);
0054 [x2,y2] = get_xy_axis(a2.data);
0055 if length(x1) ~= length(x2) || length(y1) ~= length(y2)
0056 error ('### The length of the data vectors must be the same.')
0057 end
0058
0059 complex_x = x1;
0060 complex_y = complex(y1, y2);
0061
0062 cmd = sprintf('data = %s(complex_x, complex_y)', class(a1.data));
0063 eval(cmd);
0064
0065 data = set(data, 'name', 'complex');
0066 data = set(data, 'xunits', a1.data.xunits);
0067 data = set(data, 'yunits', a1.data.yunits);
0068
0069 h = history(ALGONAME, VERSION, [], [a1.hist a2.hist]);
0070 h = set(h, 'invars', {inputname(1), inputname(2)});
0071
0072 ao_out = ao(data, h);
0073 ao_out = set(ao_out, 'name', sprintf('complex(%s, %s)', inputname(1), inputname(2)));
0074
0075
0076
0077
0078
0079
0080
0081
0082