0001 function varargout = inv(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 VERSION = '$Id: inv.m,v 1.14 2008/01/20 12:53:30 hewitson Exp $';
0023 bs = [];
0024
0025
0026
0027 if nargin == 2
0028 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0029 in = char(varargin{2});
0030 if strcmp(in, 'Params')
0031 varargout{1} = getDefaultPL();
0032 return
0033 elseif strcmp(in, 'Version')
0034 varargout{1} = VERSION;
0035 return
0036 end
0037 end
0038 end
0039
0040
0041 in_names = {};
0042 for ii = 1:nargin
0043 in_names{end+1} = inputname(ii);
0044 end
0045
0046 [as, ps, invars] = collect_inputs(varargin, in_names);
0047
0048
0049 if isempty(ps)
0050 pl = getDefaultPL();
0051 else
0052 pl = combine(ps, getDefaultPL);
0053 end
0054
0055
0056 for j=1:numel(as)
0057 a = as(j);
0058 d = get(a, 'data');
0059 dinfo = whos('d');
0060
0061
0062 dtype = dinfo.class;
0063 switch dtype
0064 case 'cdata'
0065 if size(d.y,1) ~= size(d.y,2)
0066 error('### The value (y) of data must be a square matrix.')
0067 else
0068
0069
0070
0071 [h, c] = single_operation(d, 'inv', pl);
0072
0073
0074 h = set(h, 'inhists', [a.hist]);
0075
0076
0077 h = set(h, 'invars', cellstr(invars{j}));
0078
0079 b = ao(c, h);
0080 b = setnh(b, 'name', sprintf('inv(%s)', char(invars{j})));
0081 end
0082
0083 case {'tsdata','fsdata','xydata'}
0084 error('### this function works for cdata type AO only')
0085 otherwise
0086 error('### unknown data type.')
0087
0088 end
0089
0090
0091 bs = [bs b];
0092 end
0093
0094
0095 bs = reshape(bs, size(as));
0096 varargout{1} = bs;
0097
0098
0099 function plo = getDefaultPL()
0100
0101 plo = plist();
0102
0103