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 `l`

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.

The bandlimited method uses `firls`

to
design an interpolation FIR filter. The polynomial method uses Lagrange's
polynomial interpolation formula on equally spaced samples to construct
the appropriate filter.

`decimate`

| `downsample`

| `interp`

| `resample`

| `upsample`