Home > classes > @ao > eig.m

eig

PURPOSE ^

EIG overloads the determinant function for Analysis objects.

SYNOPSIS ^

function varargout = eig(varargin)

DESCRIPTION ^

 EIG overloads the determinant function for Analysis objects.

 >>  v = svd (a,pl)
 >> [v, d] = svd (a,pl)
 >> [v, d] = svd (a)
 
 Inputs:
   pl   - a parameter list
   a    - input analysis object
 
 Outputs:
   like matlab fct

 Parameters:
  'option' - a string or value that can be submited  i.e. 'nobalance' to disable balancing  
  options are the same as for the matlab function
  
 A Monsky 08-05-07

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function varargout = eig(varargin)
0002 
0003 % EIG overloads the determinant function for Analysis objects.
0004 %
0005 % >>  v = svd (a,pl)
0006 % >> [v, d] = svd (a,pl)
0007 % >> [v, d] = svd (a)
0008 %
0009 % Inputs:
0010 %   pl   - a parameter list
0011 %   a    - input analysis object
0012 %
0013 % Outputs:
0014 %   like matlab fct
0015 %
0016 % Parameters:
0017 %  'option' - a string or value that can be submited  i.e. 'nobalance' to disable balancing
0018 %  options are the same as for the matlab function
0019 %
0020 % A Monsky 08-05-07
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 %     else
0039 %         option = [option a];
0040     end
0041 end
0042 
0043 %handle plist
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 % Loop over analysis objects
0056 for j=1:length(as)  
0057   a = as(j);
0058   
0059   d = get(a, 'data');
0060   dinfo = whos('d');
0061   % Which data type do we have
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        %create analysis object(s)
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 % END

Generated on Fri 08-Jun-2007 16:09:11 by m2html © 2003