[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cepstrum computation



At 09:59 AM 6/21/99 , Argiris A. Kranidiotis wrote:
>The definition of the Cepstrum C(t) is:
>
>                          C(t)=|| FFT( log( ||FFT(x)|| ) ) ||
>
>My question is: what happens when ||FFT(x)||=0 for some x?
>Then we have to compute log(0), which is undefined (as we all know).
>
>I suspect that I am missing something here, but this problem isn't
>mentioned anywhere in my books.

Yes, isn't it ridiculous that people sort of define things part way
and then pretend they're OK?  The whole problem of numerical stability
of such operations near the singularity is seldom addressed.  In
practice, people patch it up with a small offset or limit value.

The same problem comes up in most spectral displays, from 1-D log
spectral plots to spectrograms.  You see dark specks in histograms
and curves spiking toward negative infinity in log spectral plots
just because the spectral estimate is near zero at those locations.

The more you look into principled ways to fix that singularity of
the log, the more you'll be drawn to question why the log is used in
the first place, and if you're not careful you'll end up spending a
couple of decades on better and more 'auditory' representations--
like me you'll probably have to change careers to recover.

Dick