I have separately computed the cepstrum and the energy of a finite discrete-time signal. If the energy of the signal is high, we would expect (on average) larger cepstral values than if the energy of the signal is low. I am therefore interested in normalizing the cepstral values by the energy in some fashion to adjust for this, because I want to be able to compare the cepstral values from different signals in an energy-invariant manner. However while I know the units of the signal's energy $(\text{volts}^2\cdot\text{seconds})$ I have no idea what the units of the cepstral values are, and therefore do not know how to transform them in order to ensure that the normalization is performed appropriately. What would be the most unit-consistent way to perform this normalization?

  • 1
    $\begingroup$ Because a cepstrum is a non-linear sum of logs (and possibly non-linearly lossy in the case of the real cepstrum), it can't be made energy-invariant without some restrictions on the data. $\endgroup$
    – hotpaw2
    Mar 1, 2017 at 20:47

1 Answer 1


Nevermind, I figured it out. For my purposes, all I really want is the cepstrum of the energy-normalized signal, which after working through the algebra is equivalent to adding a delta function to the original cepstrum. (See below.)

For a real, discrete, finite-time signal $\vec{s}$, we can compute its energy as $E(\vec{s})=\vec{s}\cdot\vec{s}$. To energy-normalize the signal (i.e. ensure that $\text{energy}=1$), we multiply $\vec{s}$ by the scalar $E(\vec{s})^{-1/2}$.

The cepstrum of the the signal $\vec{s}$ is defined as $\text{cep}(\vec{s}) = \mathfrak{F}^{-1}\big(\text{log}\big(\big|\mathfrak{F}(\vec{s})\big|^2\big)\big)$. Therefore the cepstrum of the energy-normalized signal can be computed as: $\text{cep}\big(E(\vec{s})^{-1/2}\cdot\vec{s}\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(\big|\mathfrak{F}\big(E(\vec{s})^{-1/2}\cdot\vec{s}\big)\big|^2\big)\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(\big|E(\vec{s})^{-1/2}\cdot\mathfrak{F}(\vec{s})\big|^2\big)\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(E(\vec{s})^{-1}\cdot\big|\mathfrak{F}(\vec{s})\big|^2\big)\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(E(\vec{s})^{-1}\big)\cdot\mathbf{1} + \text{log}\big(\big|\mathfrak{F}(\vec{s})\big|^2\big)\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(\big|\mathfrak{F}(\vec{s})\big|^2\big) - \text{log}\big(E(\vec{s})\big)\cdot\mathbf{1}\big)\\ = \mathfrak{F}^{-1}\big(\text{log}\big(\big|\mathfrak{F}(\vec{s})\big|^2\big)\big) - \mathfrak{F}^{-1}\big(\text{log}\big(E(\vec{s})\big)\cdot\mathbf{1}\big)\\ = \text{cep}(\vec{s}) - \big[\text{log}\big(E(\vec{s})\big)\;\; 0\;\; 0\;\; \dots\;\; 0\big]$

Where $\mathbf{1}$ denotes the vector of all 1's.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.