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

Generated on Thu 01-Nov-2007 09:42:34 by m2html © 2003