A FIR Filter Optimization Toolbox for Matlab 5-7
Along with Dr. Jeffrey Coleman, I've been developing
a Matlab toolbox for optimizing FIR filters (and FIR-like structures, such as antenna arrays).
The toolbox consists of a set of classes for
defining and manipulating FIR filters and for setting up optimizations. The toolbox provides
a natural and consistent interface to internal routines as well as several freely-available
third-party optimization engines.
Although limited (eigenfilter) designs can be performed using just the toobox and standard
Matlab routines, for constrained optimization one or more of the following convex optimization
engines is required. Download and install the engines, making sure to add to Matlab's
search path as directed. All of the engines require compiling mex files for speed.
- SeDuMi -
Solves mixed linear, second-order code, and semidefinite programs
(LP/SOCP/SDP). Freely available under the GPL, reasonably fast
and reliable. This is currently the most widely used noncommercial code.
- SDPT3 -
Solves LP/SOCP/SDP. Reliable, usually a little slower than SeDuMi
but more stable for some problesm.
- SDPpack -
Solves LP/SOCP/SDP. Reliable, but slower than SeDuMi and
development appears to have ceased.
- SOCP -
Solves LP/SOCP. OK speed, but unreliable for problems with many
linear constraints. Development has ceased.
- LOQO -
A free student version is available. LOQO itself is a general nonlinear/nonconvex
solver that currently has two Matlab interfaces,
one for LP/QP
only and one for
LOQO is currently the only solver that supports a callback function for
plotting intermediate results while optimizing. (hint hint)
- MOSEK -
A free student version is available. MOSEK's Matlab toolbox solves linear,
quadratic and SOCP programs. This is currently the fastest solver I've
tried, especially for large problems.
The early development of the ideas behind the Opt toolbox and
strategies for their use in solving problems were developed at
Michigan Technological University and the University of Maryland,
Baltimore County (UMBC) under NSF grant MIP-9896034. The toolbox
itself was developed initially by UMBC (NSF funded) and the Naval
Research Laboratory (NRL) together, with funding for later development
(through NRL) taken over by the Office of Naval Research (ONR) through
its program in Operations Research and its Base Program at NRL. As of
mid-2002, development is continuing at NRL under ONR sponsorship.
This material is based upon work supported by the National Science
Foundation under Grant No. 9896034. Any opinions, findings, and
conclusions or recommendations expressed in this material are those of
the author(s) and do not necessarily reflect the views of the National