DESIGN Design a Chebyshev type I iir filter.
HD = DESIGN(D, 'cheby1') designs a Chebyshev type I filter specified by the
FDESIGN object D, and returns the DFILT/MFILT object HD.
HD = DESIGN(D, ..., 'SystemObject', true) implements the filter, HD,
using a System object instead of a DFILT/MFILT object.
HD = DESIGN(..., 'FilterStructure', STRUCTURE) returns a filter with the
structure STRUCTURE. STRUCTURE is 'df2sos' by default and can be any of
the following:
'df1sos'
'df2sos'
'df1tsos'
'df2tsos'
'cascadeallpass'
'cascadewdfallpass'
Some of the listed structures may not be supported by System object
filters. Type validstructures(D, 'cheby1', 'SystemObject', true) to
get a list of structures supported by System objects.
HD = DESIGN(..., 'MatchExactly', MATCH) designs a Chebyshev type I
filter and matches the frequency and magnitude specification for the
band MATCH exactly. The other band will exceed the specification. MATCH
can be 'stopband' or 'passband' and is 'passband' by default.
HD = DESIGN(..., 'SOSScaleNorm', NORM) designs an SOS filter and scales
the coefficients using the P-Norm NORM. NORM can be either a
discrete-time-domain norm or a frequency-domain norm. Valid time-domain
norms are 'l1','l2', and 'linf'. Valid frequency-domain norms are
'L1','L2', and 'Linf'. Note that L2-norm is equal to l2-norm
(Parseval's theorem) but the same is not true for other norms.
The different norms can be ordered in terms of how stringent they are
as follows: 'l1' >= 'Linf' >= 'L2' = 'l2' >= 'L1' >= 'linf'.
Using the most stringent scaling, 'l1', the filter is the least prone
to overflow, but also has the worst signal-to-noise ratio. Linf-scaling is
the most commonly used scaling in practice.
Scaling is turned off by default, which is equivalent to setting
SOSScaleNorm = ''.
HD = DESIGN(..., 'SOSScaleOpts', OPTS) designs an SOS filter and scales
the coefficients using an FDOPTS.SOSSCALING object OPTS. Scaling options
are:
Property Default Description/Valid values
--------- ------- ------------------------
'sosReorder' 'auto' Reorder section prior to scaling.
{'auto','none','up','down','lowpass',
'highpass','bandpass','bandstop'}
'MaxNumerator' 2 Maximum value for numerator coefficients
'NumeratorConstraint' 'none' {'none', 'unit', 'normalize','po2'}
'OverflowMode' 'wrap' {'wrap','saturate'}
'ScaleValueConstraint' 'unit' {'unit','none','po2'}
'MaxScaleValue' 'Not used' Maximum value for scale values
When sosReorder is set to 'auto', the sections will be automatically
reordered depending on the response type of the design (lowpass,
highpass, etc.).
Note that 'MaxScaleValue' will only be used when 'ScaleValueConstraint'
is set to something other than 'unit'. If 'MaxScaleValue' is set to a
number, the 'ScaleValueConstraint' will be changed to 'none'. Further,
if SOSScaleNorm is off (as it is by default), then all the SOSScaleOpts
will be ignored.
For more information about P-Norm and scaling options see help for DFILT\SCALE.
% Example #1 - Compare passband and stopband MatchExactly.
h = fdesign.lowpass('Fp,Fst,Ap,Ast', .1, .3, 1, 60);
Hd = design(h, 'cheby1', 'MatchExactly', 'passband');
Hd(2) = design(h, 'cheby1', 'MatchExactly', 'stopband');
% Compare the passband edges in FVTool.
fvtool(Hd);
axis([.09 .11 -2 0]);