


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/01/11 13:42:41 ingo Exp $
HISTORY: 03-04-2007 M Hewitson
Creation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

0001 function [a,b] = cp2iir(p, fs) 0002 % CP2IIR Return a,b IIR filter coefficients for a complex pole designed using the bilinear transform. 0003 % 0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0005 % 0006 % DESCRIPTION: CP2IIR Return a,b IIR filter coefficients for a complex pole 0007 % designed using the bilinear transform. 0008 % 0009 % CALL: [a,b] = cp2iir(p, fs) 0010 % 0011 % REMARK: This is just a helper function. This function should only be 0012 % called from class functions. 0013 % 0014 % INPUT: p - pole object 0015 % fs - the sample rate for the filter 0016 % 0017 % VERSION: $Id: cp2iir.m,v 1.4 2008/01/11 13:42:41 ingo Exp $ 0018 % 0019 % HISTORY: 03-04-2007 M Hewitson 0020 % Creation 0021 % 0022 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0023 0024 VERSION = '$Id: cp2iir.m,v 1.4 2008/01/11 13:42:41 ingo Exp $'; 0025 0026 %%%%% 'Params' && 'Version' Call %%%%% 0027 if nargin == 2 0028 if isa(p, 'pole') && ischar(fs) 0029 in = fs; 0030 if strcmp(in, 'Params') 0031 a = plist(); 0032 return 0033 elseif strcmp(in, 'Version') 0034 a = VERSION; 0035 return 0036 end 0037 end 0038 end 0039 0040 f0 = get(p, 'f'); 0041 q = get(p, 'q'); 0042 0043 w0 = f0*2*pi; 0044 w02 = w0^2; 0045 0046 k = (q*w02 + 4*q*fs*fs + 2*w0*fs) / (q*w02); 0047 b(1) = 1; 0048 b(2) = (2*w02-8*fs*fs) / (k*w02); 0049 b(3) = (q*w02 + 4*q*fs*fs - 2*w0*fs) / (k*q*w02); 0050 0051 a(1) = 1/k; 0052 a(2) = -2/k; 0053 a(3) = -1/k; 0054 a = a*-2; 0055 0056 % END