ifir
Interpolated FIR filter design
Syntax
[h,g] = ifir(l,type,f,dev)
[h,g,d] = ifir(l,type,f,dev)
[...] = ifir(...,str)
Description
[h,g] = ifir(l,type,f,dev)
designs
a periodic filter h(zl)
,
where l
is the interpolation factor. It also finds
an image-suppressor filter g(z)
, such that the
cascade of the two filters represents the optimal minimax FIR approximation
of the desired response. This response is specified by type
,
with band edge frequencies contained in vector f
.
This is done while not exceeding the maximum deviations or ripples
(linear) specified in vector dev
.
When type
is set to 'low'
,
the filter design is a lowpass design. When type
is
set to 'high'
, the filter design is a highpass
design. f
is a two-element vector with passband
and stopband edge frequency values. For narrowband lowpass filters
and wideband highpass filters, l×f(2)
is less
than 1
. For wideband lowpass filters and narrowband
highpass filters, specify f
so that l×(1–f(1))
is
less than 1
.
dev
is a two-element vector that contains
the peak ripple or deviation (in linear units) allowed for both the
passband and the stopband.
The ifir
design algorithm achieves an efficient
design in the sense that it reduces the total number of multipliers
required. To do this, the design problem is broken into two stages.
In the first stage, the filter is upsampled to achieve the stringent
specifications without using many multipliers. In the second stage,
the filter removes the images created when upsampling the previous
filter.
[h,g,d] = ifir(l,type,f,dev)
returns
a delay d
that is connected in parallel with the
cascade of h(zl)
and g(z)
for
both wideband lowpass and highpass filters. This is necessary to obtain
the desired response.
[...] = ifir(...,str)
uses str
to
choose the algorithm level of optimization used. Possible values for str
are 'simple'
, 'intermediate'
(default)
or 'advanced'
. str
provides
for a tradeoff between design speed and filter order optimization.
The 'advanced'
option can result in substantial
filter order reduction, especially for g(z)
.
Examples
Extended Capabilities
Version History
Introduced in R2011a