0001 function varargout = eig(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 invars = {};
0023 for j=1:nargin
0024 invars = [invars cellstr(inputname(j))];
0025 end
0026
0027 ALGONAME = mfilename;
0028 VERSION = '$Id: eig.html,v 1.1 2007/06/08 14:15:02 hewitson Exp $';
0029
0030 as = [];
0031 ps = [];
0032 for j=1:nargin
0033 a = varargin{j};
0034 if isa(a, 'ao')
0035 as = [as a];
0036 elseif isa(a, 'plist')
0037 ps = [ps a];
0038
0039
0040 end
0041 end
0042
0043
0044 if ~isempty(ps)
0045 if isa(ps, 'plist')
0046 pl = combine(ps);
0047 end
0048 else
0049 pl = plist();
0050 end
0051
0052 V = [];
0053 D = [];
0054
0055
0056 for j=1:length(as)
0057 a = as(j);
0058
0059 d = get(a, 'data');
0060 dinfo = whos('d');
0061
0062 dtype = dinfo.class;
0063
0064 vdata = [];
0065 ddata = [];
0066
0067 switch dtype
0068 case 'cdata'
0069 disp('* Eigenvalues of cdata object');
0070 if nargout <= 1
0071 [h, vdata] = single_operation(d, 'eig',pl);
0072 elseif nargout == 2
0073 [h, vdata, ddata] = single_operation(d, 'eig',pl);
0074 end
0075
0076 h = set(h, 'invars', [a.hist]);
0077 v = ao(vdata, h);
0078 v = set(v, 'name', sprintf('v_eig(%s)', char(invars{1})));
0079 V = [V v];
0080 if ~isempty(ddata)
0081 d = ao(ddata, h);
0082 d = set(d, 'name', sprintf('d_eig(%s)', char(invars{1})));
0083 D = [D d];
0084 end
0085 case 'tsdata' & 'fsdata' & 'xydata'
0086 error('### this function works for cdata type AO only')
0087 otherwise
0088 error('### unknown data type.')
0089 end
0090 end
0091
0092 varargout{1} = V;
0093 if nargout > 1
0094 varargout{2} = D;
0095 if nargout > 2
0096 error('### wrong number of outputs')
0097 end
0098 end
0099
0100
0101