Complex cepstral analysis
xhat = cceps(x)
[xhat,nd] = cceps(x)
[xhat,nd,xhat1] = cceps(x)
[...] = cceps(x,n)
Cepstral analysis is a nonlinear signal processing technique that is applied most commonly in speech processing and homomorphic filtering [1].
Note

xhat = cceps(x)
returns the complex cepstrum of the real data sequence x
using
the Fourier transform. The input is altered, by the application of
a linear phase term, to have no phase discontinuity at ±π radians.
That is, it is circularly shifted (after zero padding) by some samples,
if necessary, to have zero phase at π radians.
[xhat,nd] = cceps(x)
returns
the number of samples nd
of (circular) delay added
to x
prior to finding the complex cepstrum.
[xhat,nd,xhat1] = cceps(x)
returns a second complex cepstrum, xhat1
,
computed using an alternative factorization algorithm [1][2]. This
method can be applied only to finiteduration signals. See the Algorithm
section below for a comparison of the Fourier and factorization methods
of computing the complex cepstrum.
[...] = cceps(x,n)
zero
pads x
to length n
and returns
the length n
complex cepstrum of x
.
cceps
is an implementation of algorithm 7.1
in [3]. A lengthy Fortran program
reduces to these three lines of MATLAB^{®} code, which compose the
core of cceps
:
h = fft(x); logh = log(abs(h)) + sqrt(1)*rcunwrap(angle(h)); y = real(ifft(logh));
Note

The following table lists the pros and cons of the Fourier and factorization algorithms.
Algorithm  Pros  Cons 

Fourier  Can be used for any signal.  Requires phase unwrapping. Output is aliased. 
Factorization  Does not require phase unwrapping. No aliasing  Can be used only for short duration signals. Input signal must have an allzero Ztransform with no zeros on the unit circle. 
In general, you cannot use the results of these two algorithms to verify each other. You can use them to verify each other only when the first element of the input data is positive, the Ztransform of the data sequence has only zeros, all of these zeros are inside the unit circle, and the input data sequence is long (or padded with zeros).
[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. DiscreteTime Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999, pp. 788–789.
[2] Steiglitz, K., and B. Dickinson. "Computation of the Complex Cepstrum by Factorization of the Ztransform." Proceedings of the 1977 IEEE^{®} International Conference on Acoustics, Speech and Signal Processing, pp. 723–726.
[3] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979.