DSPRelated.com
Forums

group delay equalizer

Started by bharat pathak January 13, 2008
On Jan 15, 10:06&#4294967295;am, Al Clark <acl...@danvillesignal.com> wrote:

> Greg, you're a bit modest. Your FDLS method is very cool.
Thank you.
> I'm sure people would like a polished up C version. &#4294967295; > I would be glad to include it (or a link) on Danville's signal > processing resource page.
Al, you were actually the first person to receive the C version of the algorithm, many many years ago. I believe that I later found a bug in the code that I sent to you, but I never updated it because the Matlab version became available. I'll try to update the C version in my "copious" free time, and make it available to all. Thanks for the hosting offer; if I get the C version working I'll certainly take you up on that. Greg
bharat pathak wrote:
>> Hi Bharat >> >> You can use the FDLS method: >> >> http://apollo.ee.columbia.edu/spm/external/tipsandtricks/files/TandT_Jan2007= >> .zip >> >> Regards, >> Andor > > Andor, > > Sorry I do not have access to SPM.
It works for me. I have no special privileges. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Greg Berchin <gberchin@sentientscience.com> wrote in news:bd94b073-f10b-
4ddc-8d14-c9887068c16b@e32g2000prn.googlegroups.com:

> On Jan 15, 10:06&#4294967295;am, Al Clark <acl...@danvillesignal.com> wrote: > >> Greg, you're a bit modest. Your FDLS method is very cool. > > Thank you. > >> I'm sure people would like a polished up C version. &#4294967295; >> I would be glad to include it (or a link) on Danville's signal >> processing resource page. > > Al, you were actually the first person to receive the C version of the > algorithm, many many years ago. I believe that I later found a bug in > the code that I sent to you, but I never updated it because the Matlab > version became available. > > I'll try to update the C version in my "copious" free time, and make > it available to all. Thanks for the hosting offer; if I get the C > version working I'll certainly take you up on that. > > Greg >
I know you sent me the program before you were so famous. The big difference is now I actually understand how the process works. If anyone else has resources to share, we would be glad to post it since the old dspguru has been static for so long. Al Clark Danville Signal Processing
On Jan 15, 1:57&#4294967295;pm, Al Clark <acl...@danvillesignal.com> wrote:

> I know you sent me the program before you were so famous.
Famous? If I'm so famous then how come I'm not rich? Or even good looking? :-) Greg
Greg Berchin <gberchin@sentientscience.com> wrote in news:1e5b79ac-8aa8-
4ac8-81b3-7fe9d6181717@m34g2000hsb.googlegroups.com:

> On Jan 15, 1:57&#4294967295;pm, Al Clark <acl...@danvillesignal.com> wrote: > >> I know you sent me the program before you were so famous. > > Famous? If I'm so famous then how come I'm not rich?
Wrong profession? bad agent? Or even good
> looking? :-)
Talk to your parents....
> > Greg >
On Tue, 15 Jan 2008 18:57:38 GMT, Al Clark <aclark@danvillesignal.com> wrote:

>If anyone else has resources to share, we would be glad to post it since >the old dspguru has been static for so long.
I have a "C+" version of FDLS working. I call it "C+" because it was originally written in Fortran, then converted to C, and now it's somewhere between C and C++. You'll need a C++ compiler. I tried to structure it as similarly as I could to the Matlab 2.00 version. Because it uses a different method to compute the pseudoinverse, it produces results that are comparable to, but not identical to, the Matlab version. Any volunteers for beta testing? Contact me by removing the "i" from "comicast". Greg Berchin
Greg Berchin wrote:
> On Tue, 15 Jan 2008 18:57:38 GMT, Al Clark <aclark@danvillesignal.com> wrote: > >> If anyone else has resources to share, we would be glad to post it since >> the old dspguru has been static for so long. > > I have a "C+" version of FDLS working. I call it "C+" because it was > originally written in Fortran, then converted to C, and now it's somewhere > between C and C++. You'll need a C++ compiler. I tried to structure it as > similarly as I could to the Matlab 2.00 version. Because it uses a different > method to compute the pseudoinverse, it produces results that are comparable > to, but not identical to, the Matlab version. > > Any volunteers for beta testing? Contact me by removing the "i" from > "comicast".
Watch out! Some yahoo in the gummint will see it as code for "commiecast" and come looking for you. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
On Sat, 19 Jan 2008 13:28:56 -0500, Jerry Avins <jya@ieee.org> wrote:

>Watch out! Some yahoo in the gummint will see it as code for >"commiecast" and come looking for you.
"When everyone is out to get you, paranoid is just good thinking." ~Dr. Johnny Fever
Hi Folks,

I came across this thread while searching for an alternative to the Matlab
function iirgrpdelay. I don't have MATLAB, but use Octave instead.
Unfortunately, iirgrpdelay uses a compiled MATLAB MEX file for its guts.

I tried Greg's cool function (which is 100% Octave compatible!), but it
doesn't give me quite what I need. I need a true allpass filter (numerator
coefficients same as reversed denominator coefficients), like iirgrpdelay
produces. Putting in all 1's for magnitude does not yield this.

I've already attempted to use Markus Lang's old MATLAB program,
ap_lgs_z.m, whose method is decribed in his IEEE papers "Allpass Filter
Design and Applications" and "Simple and Robust Method for the Design of
Allpass Filters Using Least-Squares Phase Error Criterion." But this
required some changes to get it to run at all (his variable names are in
German, so I had to do some guessing!). While it converges, I don't seem to
get the right filter coefficients. And Marcus is working back in Germany
and on one of those extended summer vacations that Europeans get, so I
can't contact him.

Any help on a finding working all-pass filter design code would be greatly
appreciated! If it is in pretty much any other computer language and
well-commented (with examples), I can translate it to MATLAB/Octave.

Thanks,
Terry Montlick
(acoustics and occasional signal processing stuff)


On 20 Jul., 14:06, Terry wrote:
> Hi Folks, > > I came across this thread while searching for an alternative to the Matlab > function iirgrpdelay. I don't have MATLAB, but use Octave instead. > Unfortunately, iirgrpdelay uses a compiled MATLAB MEX file for its guts. > > I tried Greg's cool function (which is 100% Octave compatible!), but it > doesn't give me quite what I need. I need a true allpass filter (numerator > coefficients same as reversed denominator coefficients), like iirgrpdelay > produces. Putting in all 1's for magnitude does not yield this.
Hi Terry It is quite easy to modify Greg's FDLS to design proper allpass filters. Remember that the underlying equations are of the form A_m cos(w_m + phi_m) = - A_m sum_{k=1}^p a_k cos(-w_m*k + phi_m) + sum_ {k=0}^z b_k cos(-w_m*k) where w_m, m=1,2,...M, are the frequencies where you sample the allpass frequncy response, A_m the amplitude and phi_m the phase at that frequency (p is the order of the recursive part, z the order of the transversal part). For an allpass filter of order p, the above equation becomes cos(w_m + phi_m) = -sum_{k=1}^p a_k cos(-w_m*k + phi_m) + sum_{k=0}^p a_{p-k} cos(-w_m*k), so you get cos(w_m + phi_m) - cos(-w_m*p) = sum_{k=1}^p a_k ( cos(-w_m*k + phi_m) + cos(-w_k*(p-k)) ) and now solve for the allpass coefficients a_k. Regards, Andor
> > I've already attempted to use Markus Lang's old MATLAB program, > ap_lgs_z.m, whose method is decribed in his IEEE papers "Allpass Filter > Design and Applications" and "Simple and Robust Method for the Design of > Allpass Filters Using Least-Squares Phase Error Criterion." But this > required some changes to get it to run at all (his variable names are in > German, so I had to do some guessing!). While it converges, I don't seem to > get the right filter coefficients. And Marcus is working back in Germany > and on one of those extended summer vacations that Europeans get, so I > can't contact him.
Don't know about those extended summer vacations :-). But then, Switzerland aint Europe.