Interpolation FIR filter design

`b = intfilt(l,p,alpha)`

b = intfilt(l,n,'Lagrange')

`b = intfilt(l,p,alpha)`

designs
a linear phase FIR filter that performs ideal bandlimited interpolation
using the nearest `2`

*`p`

nonzero
samples, when used on a sequence interleaved with `l-1`

consecutive
zeros every `l`

samples. It assumes an original bandlimitedness
of alpha times the Nyquist frequency. The returned filter is identical
to that used by `interp`

. `b`

is
length 2*`l`

*`p-1`

.

alpha is inversely proportional to the transition bandwidth
of the filter and it also affects the bandwidth of the don't-care
regions in the stopband. Specifying alpha allows you to specify how
much of the Nyquist interval your input signal occupies. This is beneficial,
particularly for signals to be interpolated, because it allows you
to increase the transition bandwidth without affecting the interpolation
and results in better stopband attenuation for a given `l`

and `p`

.
If you set alpha to 1, your signal is assumed to occupy the entire
Nyquist interval. Setting alpha to less than one allows for don't-care
regions in the stopband. For example, if your input occupies half
the Nyquist interval, you could set alpha to 0.5.

`b = intfilt(l,n,'Lagrange')`

designs
an FIR filter that performs `n`

th-order Lagrange
polynomial interpolation on a sequence interleaved with `l-1`

consecutive
zeros every `r`

samples. `b`

has
length `(n+1)`

*`l`

for `n`

even,
and length `(n+1)`

*`l-1`

for `n`

odd.
If both `n`

and `l`

are even, the
filter designed is not linear phase.

Both types of filters are basically lowpass and have a gain
of `l`

in the passband.

`decimate`

| `downsample`

| `interp`

| `resample`

| `upsample`

Was this topic helpful?