The following is a suggestion for anyone interested in a project. I may
eventually try to do this myself, but I thought I would mention it here
in case someone else has an interest in it.
In MATLAB 7, the filter design function remez has been deprecated in
favor of a function called "firpm" (the letters PM meaning
Parks-McLellan). In addition, a new filter function has been added
called "firls", which uses a least-squares design approach. The
functions firpm and firls use similar calling conventions to the old
remez function. I think it would make sense to eventually move "remez"
to "firpm", with perhaps a remez.m script that calls firpm (this is what
appears to happen in MATLAB 7).
I have found the firls function to be quite useful, for reasons
described below. Writing the code for the firls function could be a bit
of a project. I have found a pretty decent description of how it works
at http://cnx.rice.edu/content/m10577/latest/ . It appears to me that
unlike the Parks-McLellan algorithm, this approach is non-iterative, so
I think it could be reasonable fast written as an m file.
While these filters do not satisfy the equiripple constraint of the
Parks-McLellan approach, there are situations in which they can be
desirable. One case is where the specifications make it difficult for
the Parks-McLellan algorithm to converge. In my experience least squares
filters tend to achieve a better average stop band attenuation for the
same filter length than their equiripple Parks-McLellan counterparts,
which makes them desirable in situations where exactly meeting a certain
ripple level is not critical.