CP2IIR Return a,b IIR filter coefficients for a complex pole designed using the bilinear transform. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: CP2IIR Return a,b IIR filter coefficients for a complex pole designed using the bilinear transform. CALL: [a,b] = cp2iir(p, fs) REMARK: This is just a helper function. This function should only be called from class functions. INPUT: p - pole object fs - the sample rate for the filter VERSION: $Id: cp2iir.m,v 1.4 2008/09/04 15:29:31 ingo Exp $ HISTORY: 03-04-2007 M Hewitson Creation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 % CP2IIR Return a,b IIR filter coefficients for a complex pole designed using the bilinear transform. 0002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0003 % 0004 % DESCRIPTION: CP2IIR Return a,b IIR filter coefficients for a complex pole 0005 % designed using the bilinear transform. 0006 % 0007 % CALL: [a,b] = cp2iir(p, fs) 0008 % 0009 % REMARK: This is just a helper function. This function should only be 0010 % called from class functions. 0011 % 0012 % INPUT: p - pole object 0013 % fs - the sample rate for the filter 0014 % 0015 % VERSION: $Id: cp2iir.m,v 1.4 2008/09/04 15:29:31 ingo Exp $ 0016 % 0017 % HISTORY: 03-04-2007 M Hewitson 0018 % Creation 0019 % 0020 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0021 0022 function varargout = cp2iir(varargin) 0023 0024 %%% Check if this is a call for parameters 0025 if utils.helper.isinfocall(varargin{:}) 0026 varargout{1} = getInfo(varargin{3}); 0027 return 0028 end 0029 0030 p = varargin{1}; 0031 fs = varargin{2}; 0032 0033 f0 = p.f; 0034 q = p.q; 0035 0036 w0 = f0*2*pi; 0037 w02 = w0^2; 0038 0039 k = (q*w02 + 4*q*fs*fs + 2*w0*fs) / (q*w02); 0040 b(1) = 1; 0041 b(2) = (2*w02-8*fs*fs) / (k*w02); 0042 b(3) = (q*w02 + 4*q*fs*fs - 2*w0*fs) / (k*q*w02); 0043 0044 a(1) = 1/k; 0045 a(2) = -2/k; 0046 a(3) = -1/k; 0047 a = a*-2; 0048 0049 varargout{1} = a; 0050 varargout{2} = b; 0051 end 0052 0053 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0054 % Local Functions % 0055 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0056 0057 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0058 % 0059 % FUNCTION: getInfo 0060 % 0061 % DESCRIPTION: Get Info Object 0062 % 0063 % HISTORY: 11-07-07 M Hewitson 0064 % Creation. 0065 % 0066 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0067 0068 function ii = getInfo(varargin) 0069 if nargin == 1 && strcmpi(varargin{1}, 'None') 0070 sets = {}; 0071 pl = []; 0072 else 0073 sets = {'Default'}; 0074 pl = getDefaultPlist; 0075 end 0076 % Build info object 0077 ii = minfo(mfilename, 'pz', '', utils.const.categories.internal, '$Id: cp2iir.m,v 1.4 2008/09/04 15:29:31 ingo Exp $', sets, pl); 0078 end 0079 0080 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0081 % 0082 % FUNCTION: getDefaultPlist 0083 % 0084 % DESCRIPTION: Get Default Plist 0085 % 0086 % HISTORY: 11-07-07 M Hewitson 0087 % Creation. 0088 % 0089 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0090 0091 function plo = getDefaultPlist() 0092 plo = plist(); 0093 end 0094