Cannot deduce a transfer function! Help!
Ältere Kommentare anzeigen
Hey everyone, I've tried creating a bandpass filter and finding it's transfer function but have had no luck. As you can see below, I tried making the filter and the line for 'd' runs just fine, but when I try to create the IIR filter 'HdIIR' from object d, it doesn't work. It has worked for other objects like 'd' I have created so I do not understand why this one doesn't work (albeit that my other objects used different parameters, but this should still be valid).
Once I get the filter to work, I would like to find the numerator and the denominator of the transfer function (S-domain preferable) of the filter but cannot find a method that will do so given either 'd' or 'HdIIR'.
Please help if you can!
-------------------------------------------------------------
clear all
close all
f_p1=40000; %Pass Frequency in Hz
f_p2=50000; %Stop Frequency in Hz
r_s=25; %Stopband Attenuation in dB
r_p=3; %Passband Ripple
n=10;
d = fdesign.bandpass('N,F3dB1,F3dB2,Ast1,Ap,Ast2',n,f_p1,f_p2,r_s,r_p,r_s,150e3);
HdIIR = design(d,'butter');
-----------------------------------------------------------------
??? Error using ==> fdesign.abstracttype.superdesign at 60
butter is an invalid design method.
Error in ==> fdesign.abstracttype.design at 11
varargout{1} = superdesign(this, varargin{:});
Error in ==> Demo at 13
HdIIR = design(d,'butter');
1 Kommentar
Alex
am 21 Nov. 2011
Antworten (2)
Kaustubha Govind
am 21 Nov. 2011
It appears that 'butter' is not a valid design method for the band-pass filter object.
Using designmethods on your filter design object, I got:
>> designmethods(d)
Design Methods for class fdesign.bandpass (N,F3dB1,F3dB2,Ast1,Ap,Ast2):
ellip
So 'ellip' seems to be the only available design method for your band-pass filter.
6 Kommentare
Alex
am 21 Nov. 2011
Kaustubha Govind
am 22 Nov. 2011
I don't know if I understand your question completely. Like I mentioned, you can use the 'ellip' method to find the filter coefficients (and therefore the transfer function).
Wayne King
am 22 Nov. 2011
@Alex the IIR filters are in biquad form (cascaded second order sections) for robustness. If you want to see the coefficents are they would appear in a constant-coefficient linear difference equation, you can do:
Hd = design(d);
[B,A] = sos2tf(Hd.sosMatrix,Hd.ScaleValues);
Alex
am 22 Nov. 2011
Wayne King
am 22 Nov. 2011
B are the numerator coefficients and A are the denominator coefficients. They are just the coefficients for the difference equation.
H is just a MATLAB convention for a handle to an object Hd is a filter object. You don't have to use H. You could use hd, or no h at all, I just use h when I want to remind myself that the output is a handle object.
Alex
am 22 Nov. 2011
Kategorien
Mehr zu Analog Filters finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!