0001 function p = pole(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 ALGONAME = mfilename;
0012 VERSION = '$Id: pole.html,v 1.1 2007/06/08 14:15:07 hewitson Exp $';
0013
0014 if nargin == 1
0015
0016 if isnumeric(varargin{1})
0017 if isreal(varargin{1})
0018 p.name = 'real pole';
0019 p.f = varargin{1};
0020 p.q = -1;
0021 p.ri = p.f;
0022 p.version = VERSION;
0023 p = class(p, 'pole');
0024 else
0025 p.name = 'complex pole';
0026 [p.f, p.q] = pri2fq(varargin{1});
0027 p.ri = [varargin{1} conj(varargin{1})];
0028 p.version = VERSION;
0029 p = class(p, 'pole');
0030 end
0031 elseif isstruct(varargin{1})
0032
0033 p = class(varargin{1}, 'pole');
0034
0035 elseif isa(varargin{1}, 'plist')
0036
0037 p = poleFromPlist(varargin{1}, VERSION);
0038
0039 elseif isa(varargin{1}, 'pole')
0040 p = varargin{1};
0041 else
0042 error('### unknown constructor method for pole class.');
0043 end
0044
0045 else
0046 if isnumeric(varargin{1}) && isnumeric(varargin{2})
0047 p.name = 'complex pole';
0048 p.f = varargin{1};
0049 p.q = varargin{2};
0050 p.ri = pfq2ri(p.f, p.q);
0051 p.version = VERSION;
0052 p = class(p, 'pole');
0053
0054 else
0055 error('### unknown constructor method for pole class.');
0056 end
0057
0058 end
0059
0060
0061
0062
0063 function p = poleFromPlist(pl, VERSION)
0064
0065 f = find(pl, 'f');
0066 q = find(pl, 'q');
0067 ri = find(pl, 'ri');
0068
0069
0070 if ~isempty(f)
0071 if ~isempty(q)
0072
0073 p.name = 'complex pole';
0074 p.f = f;
0075 p.q = q;
0076 p.ri = pfq2ri(p.f, p.q);
0077 p.version = VERSION;
0078 p = class(p, 'pole');
0079
0080 else
0081
0082 p.name = 'real pole';
0083 p.f = f;
0084 p.q = -1;
0085 p.ri = p.f;
0086 p.version = VERSION;
0087 p = class(p, 'pole');
0088
0089 end
0090 elseif ~isempty(ri)
0091
0092 p.name = 'complex pole';
0093 [p.f, p.q] = pri2fq(ri);
0094 p.ri = ri;
0095 p.version = VERSION;
0096 p = class(p, 'pole');
0097
0098 else
0099 error('### unknown constructor method for pole class.');
0100 end
0101
0102
0103
0104