Home > classes > @zero > zero.m

zero

PURPOSE ^

ZERO construct a pole object.

SYNOPSIS ^

function p = zero(varargin)

DESCRIPTION ^

 ZERO construct a pole object.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION:  ZERO construct a pole object.

 CONSTRUCTORS: z = zero(f);      - frequency (Hz)
               z = zero(f,q);    - frequency (Hz), Q
               z = zero(c);      - complex number
               z = zero(pl);     - plist()

 PARAMETERS:   'f'  - frequency
               'q'  - Q
               'ri' - complex value

 VERSION:      $Id: zero.m,v 1.15 2008/01/11 13:42:11 ingo Exp $

 HISTORY:      02-04-2007 Hewitson
                  Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function p = zero(varargin)
0002 % ZERO construct a pole object.
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION:  ZERO construct a pole object.
0007 %
0008 % CONSTRUCTORS: z = zero(f);      - frequency (Hz)
0009 %               z = zero(f,q);    - frequency (Hz), Q
0010 %               z = zero(c);      - complex number
0011 %               z = zero(pl);     - plist()
0012 %
0013 % PARAMETERS:   'f'  - frequency
0014 %               'q'  - Q
0015 %               'ri' - complex value
0016 %
0017 % VERSION:      $Id: zero.m,v 1.15 2008/01/11 13:42:11 ingo Exp $
0018 %
0019 % HISTORY:      02-04-2007 Hewitson
0020 %                  Creation
0021 %
0022 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0023 
0024 VERSION  = '$Id: zero.m,v 1.15 2008/01/11 13:42:11 ingo Exp $';
0025 
0026 %%%%%   Check if this is a call for parameters   %%%%%
0027 if nargin == 2
0028   if isa(varargin{1}, 'zero') && ischar(varargin{2})
0029     in = char(varargin{2});
0030     if strcmp(in, 'Params')
0031       p = plist;
0032       return
0033     elseif strcmp(in, 'Version')
0034       p = VERSION;
0035       return
0036     end
0037   end
0038 end
0039 
0040 %%%%%%%%%%%%%%%%%%%%%%%%   define zero properties   %%%%%%%%%%%%%%%%%%%%%%%%%
0041 
0042   function p = init()
0043     p.name    = 'not defined';
0044     p.f       = NaN;
0045     p.q       = NaN;
0046     p.ri      = NaN;
0047     p.version = VERSION;
0048     p.created = time;
0049     p         = class(p, 'zero');
0050   end
0051 
0052 %%%%%%%%%%%%%%%%%%%%%%%%%%   Create zero object   %%%%%%%%%%%%%%%%%%%%%%%%%%%
0053 
0054 %%%%%%%%%%   p = zero()   %%%%%%%%%%
0055 if nargin == 0
0056 
0057   p = init();
0058 
0059 elseif nargin == 1
0060 
0061   %%%%%%%%%% Create from XML fragment %%%%%%%%%%%
0062   if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0063     p = fromxml(varargin{1});
0064   %%%%%%%%%%% From File %%%%%%%%%%%%%%%%
0065   elseif ischar(varargin{1})
0066 
0067     filename = varargin{1};
0068     [path, name, ext, vers] = fileparts(filename);
0069     switch ext
0070       case '.mat'
0071         p = load(filename);
0072         p = p.a;
0073       case '.xml'
0074         p = xmlparse(zero, filename);
0075       otherwise
0076         error('### Unknown file type.');
0077     end
0078 
0079   %%%%%%%%%%   p = zero(number)           %%%%%%%%%%
0080   %%%%%%%%%%   p = zero(complex number)   %%%%%%%%%%
0081   elseif isnumeric(varargin{1})
0082 
0083     p = init();
0084 
0085     if isreal(varargin{1})
0086       p.name    = 'real zero';
0087       p.f       = varargin{1};
0088       p.q       = NaN;
0089       p.ri      = pfq2ri(p.f);
0090 
0091     else
0092       p.name     = 'complex zero';
0093       [p.f, p.q] = pri2fq(varargin{1});
0094       p.ri      = [varargin{1} conj(varargin{1})];
0095     end
0096 
0097   %%%%%%%%%%   p = zero(struct)   %%%%%%%%%%
0098   elseif isstruct(varargin{1})
0099 
0100     p = init();
0101 
0102     fields = fieldnames(varargin{1});
0103     for ii = 1:length(fields)
0104       field = fields{ii};
0105       try
0106         p.(field) = varargin{1}.(field);
0107       catch
0108           error('### The field ''%s'' in the struct is not a zero property.', field)
0109       end
0110     end
0111 
0112   %%%%%%%%%%   p = zero(plist)   %%%%%%%%%%
0113   elseif isa(varargin{1}, 'plist')
0114 
0115     p = init();
0116     p = zeroFromPlist(p, varargin{1});
0117 
0118   %%%%%%%%%%   p = zero(zero)   %%%%%%%%%%
0119   elseif isa(varargin{1}, 'zero')
0120     p = varargin{1};
0121 
0122   else
0123     error('### unknown constructor method for zero class.');
0124   end
0125 
0126 elseif nargin == 2
0127   %%%%%%%%%%% From DATABASE
0128   if isa(varargin{1}, 'database')
0129     p = retrieve(varargin{1}, varargin{2:end});
0130   %%%%%%%%%%   p = zero(f, q)   %%%%%%%%%%
0131   elseif isnumeric(varargin{1}) && isnumeric(varargin{2})
0132 
0133     p      = init();
0134     if isnan(varargin{2})
0135       p.name = 'real zero';
0136     else
0137       p.name = 'complex zero';
0138     end
0139     p.f    = varargin{1};
0140     p.q    = varargin{2};
0141     p.ri   = pfq2ri(p.f, p.q);
0142 
0143   else
0144     error('### unknown constructor method for zero class.');
0145   end
0146 
0147 end
0148 
0149 %--------------------------------------------------------------------------
0150 % construct a zero from plist
0151 %
0152 function p = zeroFromPlist(p, pl)
0153 
0154   f  = find(pl, 'f');
0155   q  = find(pl, 'q');
0156   ri = find(pl, 'ri');
0157 
0158   name    = find(pl, 'name');
0159   version = find(pl, 'version');
0160   created = find(pl, 'created');
0161 
0162   if ~isempty(f)
0163     if ~isempty(q)
0164       % complex zero
0165       if isnan(q)
0166         p.name    = 'real zero';
0167       else
0168         p.name    = 'complex zero';
0169       end
0170       p.f       = f;
0171       p.q       = q;
0172       p.ri      = pfq2ri(p.f, p.q);
0173 
0174     else
0175       % real zero
0176       p.name    = 'real zero';
0177       p.f       = f;
0178       p.q       = NaN;
0179       p.ri      = pfq2ri(p.f);
0180 
0181     end
0182   elseif ~isempty(ri)
0183     % complex zero
0184     p.name    = 'complex zero';
0185     [p.f, p.q] = pri2fq(ri);
0186     p.ri      = [ri conj(ri)];
0187 
0188   else
0189     error('### unknown constructor method for zero class.');
0190   end
0191 
0192   % Set other the properties in the plist
0193   if ~isempty(name)
0194     p.name = name;
0195   end
0196   if ~isempty(version)
0197     p.version = version;
0198   end
0199   if ~isempty(created)
0200     p.created = created;
0201   end
0202 
0203 end
0204 
0205 
0206 end % function p = zero(varargin)
0207

Generated on Tue 22-Jan-2008 10:39:13 by m2html © 2003