0001 function pzm = pzmodel(varargin)
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: pzmodel.m,v 1.7 2007/08/31 17:40:08 hewitson Exp $';
0026
0027 if nargin == 0
0028
0029 gain = 0;
0030 poles = [];
0031 zeros = [];
0032 name = 'pzmodel';
0033 pzm = pzmodel(gain, poles, zeros, name);
0034
0035 elseif nargin == 1
0036 pl = varargin{1};
0037
0038
0039 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0040 pzm = fromxml(varargin{1});
0041
0042
0043 elseif ischar(varargin{1})
0044
0045 filename = varargin{1};
0046 [path, name, ext, vers] = fileparts(filename);
0047 switch ext
0048 case '.mat'
0049 pzm = load(filename);
0050 case '.xml'
0051 pzm = xmlparse(pzmodel, filename);
0052 otherwise
0053 error('### Unknown file type.');
0054 end
0055
0056
0057 elseif isstruct(pl)
0058 pzm.name = pl.name;
0059 pzm.gain = pl.gain;
0060 pzm.poles = pl.poles;
0061 pzm.zeros = pl.zeros;
0062 pzm = class(pzm, 'pzmodel');
0063 return
0064
0065 else
0066
0067 gain = find(pl, 'gain');
0068 poles = find(pl, 'poles');
0069 zeros = find(pl, 'zeros');
0070 name = find(pl, 'name');
0071 if isempty(name)
0072 name = 'pzmodel';
0073 end
0074 pzm = pzmodel(gain, poles, zeros, name);
0075 end
0076
0077 elseif nargin == 2
0078
0079 if isa(varargin{1}, 'database')
0080 pzm = retrieve(varargin{1}, varargin{2:end});
0081 else
0082 error('### incorrect pzmodel constructor.');
0083 end
0084
0085
0086
0087 elseif nargin >= 3
0088 a = varargin{1};
0089 if isa(a, 'ao')
0090 gain = a.data.y(1);
0091 else
0092 gain = a;
0093 end
0094 poles = varargin{2};
0095 zeros = varargin{3};
0096 if nargin == 4
0097 name = char(varargin{4});
0098 else
0099 name = 'pzmodel';
0100 end
0101
0102
0103 pzm.name = name;
0104 pzm.gain = gain;
0105 pzm.poles = poles;
0106 pzm.zeros = zeros;
0107 pzm = class(pzm, 'pzmodel');
0108
0109 else
0110 error('### incorrect number of inputs.');
0111 end
0112
0113