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.9 2007/08/31 17:40:08 hewitson 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.9 2007/08/31 17:40:08 hewitson Exp $
0018 %
0019 % HISTORY:      02-04-2007 Hewitson
0020 %                  Creation
0021 %
0022 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0023 
0024 ALGONAME = mfilename;
0025 VERSION  = '$Id: zero.m,v 1.9 2007/08/31 17:40:08 hewitson Exp $';
0026 
0027 %%%%%%%%%%%%%%%%%%%%%%%%   define zero properties   %%%%%%%%%%%%%%%%%%%%%%%%%
0028 
0029   function p = init()
0030     p.name    = 'not defined';
0031     p.f       = NaN;
0032     p.q       = NaN;
0033     p.ri      = NaN;
0034     p.version = VERSION;
0035     p         = class(p, 'zero');
0036   end
0037 
0038 %%%%%%%%%%%%%%%%%%%%%%%%%%   Create zero object   %%%%%%%%%%%%%%%%%%%%%%%%%%%
0039 
0040 %%%%%%%%%%   p = zero()   %%%%%%%%%%
0041 if nargin == 0
0042 
0043   p = init();
0044 
0045 elseif nargin == 1
0046 
0047   %%%%%%%%%% Create from XML fragment %%%%%%%%%%%
0048   if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0049     p = fromxml(varargin{1});
0050   %%%%%%%%%%% From File %%%%%%%%%%%%%%%%
0051   elseif ischar(varargin{1})
0052     
0053     filename = varargin{1};
0054     [path, name, ext, vers] = fileparts(filename);
0055     switch ext
0056       case '.mat'
0057         p = load(filename);
0058       case '.xml'
0059         p = xmlparse(zero, filename);
0060       otherwise
0061         error('### Unknown file type.');
0062     end
0063     
0064   %%%%%%%%%%   p = zero(number)           %%%%%%%%%%
0065   %%%%%%%%%%   p = zero(complex number)   %%%%%%%%%%
0066   elseif isnumeric(varargin{1})
0067 
0068     p = init();
0069 
0070     if isreal(varargin{1})
0071       p.name    = 'real zero';
0072       p.f       = varargin{1};
0073       p.q       = NaN;
0074       p.ri      = pfq2ri(p.f);
0075 
0076     else
0077       p.name     = 'complex zero';
0078       [p.f, p.q] = pri2fq(varargin{1});
0079       p.ri      = [varargin{1} conj(varargin{1})];
0080     end
0081 
0082   %%%%%%%%%%   p = zero(struct)   %%%%%%%%%%
0083   elseif isstruct(varargin{1})
0084 
0085     p = init();
0086 
0087     fields = fieldnames(varargin{1});
0088     for ii = 1:length(fields)
0089       field = fields{ii};
0090       try
0091         p.(field) = varargin{1}.(field);
0092       catch
0093           error('### The field ''%s'' in the struct is not a zero property.', field)
0094       end
0095     end
0096 
0097   %%%%%%%%%%   p = zero(plist)   %%%%%%%%%%
0098   elseif isa(varargin{1}, 'plist')
0099 
0100     p = init();
0101     p = zeroFromPlist(p, varargin{1});
0102 
0103   %%%%%%%%%%   p = zero(zero)   %%%%%%%%%%
0104   elseif isa(varargin{1}, 'zero')
0105     p = varargin{1};
0106 
0107   else
0108     error('### unknown constructor method for zero class.');
0109   end
0110 
0111 elseif nargin == 2
0112   %%%%%%%%%%% From DATABASE
0113   if isa(varargin{1}, 'database')        
0114     p = retrieve(varargin{1}, varargin{2:end});
0115   %%%%%%%%%%   p = zero(f, q)   %%%%%%%%%%
0116   elseif isnumeric(varargin{1}) && isnumeric(varargin{2})
0117 
0118     p      = init();
0119     p.name = 'complex zero';
0120     p.f    = varargin{1};
0121     p.q    = varargin{2};
0122     p.ri   = pfq2ri(p.f, p.q);
0123 
0124   else
0125     error('### unknown constructor method for zero class.');
0126   end
0127 
0128 end
0129 
0130 %--------------------------------------------------------------------------
0131 % construct a zero from plist
0132 %
0133 function p = zeroFromPlist(p, pl)
0134 
0135   f  = find(pl, 'f');
0136   q  = find(pl, 'q');
0137   ri = find(pl, 'ri');
0138 
0139   if ~isempty(f)
0140     if ~isempty(q)
0141       % complex zero
0142       p.name    = 'complex zero';
0143       p.f       = f;
0144       p.q       = q;
0145       p.ri      = pfq2ri(p.f, p.q);
0146 
0147     else
0148       % real zero
0149         p.name    = 'real zero';
0150       p.f       = f;
0151       p.q       = NaN;
0152       p.ri      = pfq2ri(p.f);
0153 
0154     end
0155   elseif ~isempty(ri)
0156     % complex zero
0157     p.name    = 'complex zero';
0158     [p.f, p.q] = pri2fq(ri);
0159     p.ri      = ri;
0160 
0161   else
0162     error('### unknown constructor method for zero class.');
0163   end
0164 end
0165 
0166 
0167 end % function p = zero(varargin)
0168

Generated on Mon 03-Sep-2007 12:12:34 by m2html © 2003