Note: This page has been translated by MathWorks. Please click here

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

Least P-norm optimal FIR filter

`b = firlpnorm(n,f,edges,a)`

b = firlpnorm(n,f,edges,a,w)

b = firlpnorm(n,f,edges,a,w,p)

b = firlpnorm(n,f,edges,a,w,p,dens)

b = firlpnorm(n,f,edges,a,w,p,dens,initnum)

b = firlpnorm(...,'minphase')

[b,err] = firlpnorm(...)

`b = firlpnorm(n,f,edges,a)`

returns
a filter of numerator order `n`

which represents
the best approximation to the frequency response described by `f`

and `a`

in
the least-Pth norm sense. P is set to 128 by default, which essentially
equivalent to the infinity norm. Vector `edges`

specifies
the band-edge frequencies for multiband designs. `firlpnorm`

uses
an unconstrained quasi-Newton algorithm to design the specified filter.

`f`

and `a`

must have the
same number of elements, which can exceed the number of elements in `edges`

.
This lets you specify filters with any gain contour within each band.
However, the frequencies in `edges`

must also be
in vector `f`

. Always use `freqz`

to
check the resulting filter.

`firlpnorm`

uses a nonlinear optimization
routine that may not converge in some filter design cases. Furthermore
the algorithm is not well-suited for certain large-order (order >
100) filter designs.

`b = firlpnorm(n,f,edges,a,w)`

uses
the weights in `w`

to weight the error. `w`

has one entry per frequency point (the same length as `f`

and `a`

)
which tells `firlpnorm`

how much emphasis to put
on minimizing the error in the vicinity of each frequency point relative
to the other points. For example,

b = firlpnorm(20,[0 .15 .4 .5 1],[0 .4 .5 1],... [1 1.6 1 0 0],[1 1 1 10 10])

designs a lowpass filter with a peak of 1.6 within the passband, and with emphasis placed on minimizing the error in the stopband.

`b = firlpnorm(n,f,edges,a,w,p)`

where `p`

is
a two-element vector [`pmin pmax`

] lets you specify
the minimum and maximum values of `p`

used in the
least-pth algorithm. Default is `[2 128]`

which essentially
yields the L-infinity, or Chebyshev, norm. `pmin`

and `pmax`

should
be even numbers. The design algorithm starts optimizing the filter
with `pmin`

and moves toward an optimal filter in
the `pmax`

sense. When `p`

is set
to '** inspect**',

`firlpnorm`

does
not optimize the resulting filter. You might use this feature to inspect
the initial zero placement.`b = firlpnorm(n,f,edges,a,w,p,dens)`

specifies
the grid density `dens`

used in the optimization.
The number of grid points is [`dens*(n+1)`

]. The
default is 20. You can specify `dens`

as a single-element
cell array. The grid is equally spaced.

`b = firlpnorm(n,f,edges,a,w,p,dens,initnum)`

lets
you determine the initial estimate of the filter numerator coefficients
in vector `initnum`

. This can prove helpful for difficult
optimization problems. The pole-zero editor in Signal
Processing Toolbox™ software
can be used for generating `initnum`

.

`b = firlpnorm(...,'minphase')`

where
'`minphase`

' is the last argument in the argument
list generates a minimum-phase FIR filter. By default, `firlpnorm`

design
mixed-phase filters. Specifying input option '`minphase`

'
causes `firlpnorm`

to use a different optimization
method to design the minimum-phase filter. As a result of the different
optimization used, the minimum-phase filter can yield slightly different
results.

`[b,err] = firlpnorm(...)`

returns
the least-pth approximation error `err`

.

Saramaki, T, Finite Impulse Response Filter
Design, *Handbook for Digital Signal Processing*Mitra,
S.K. and J.F. Kaiser Eds. Wiley-Interscience, N.Y., 1993, Chapter
4.

`filter`

| `firgr`

| `freqz`

| `fvtool`

| `iirgrpdelay`

| `iirlpnorm`

| `iirlpnormc`

| `zplane`

Was this topic helpful?