Engee documentation

cceps

Comprehensive cepstral analysis.

Library

EngeeDSP

Syntax

Function call

  • xhat, nd, xhat1 = cceps(x) — returns a complex capstr xhat and the second complex capstr xhat1 a real sequence of data x using the Fourier transform. It also returns the number of counts. nd (circular) delays added to x before finding the complex kepstra.

  • xhat, nd, xhat1 = cceps(x, n) — also complements x with zeros up to the length n.

Function cceps it only works with real data.

Arguments

Input arguments

# x — input signal

+ the real vector

Details

The input signal, specified as a real vector. The use of a linear phase term avoids a phase jump by glad. That is, if necessary, it is cyclically shifted (after being padded with zeros) by several samples in order to obtain the zero phase on glad.

# n is the length of the zero—padded signal

+ a positive real integer

Details

The length of the signal, padded with zeros, is set as a positive real integer.

Output arguments

# xhat — complex cap

+ vector

Details

A complex kepstra returned as a vector.

# nd — number of samples

+ positive real scalar

Details

The number of circular delay counts added to x returned as a positive real scalar.

# xhat1 is the second complex cap

+ vector

Details

The second complex cepstr, returned as a vector. Argument xhat1 It is calculated using an alternative factorization algorithm described in [1] and [2]. This method is applicable only to signals of finite duration. The Algorithms section provides a comparison of Fourier and factorization methods for calculating complex kepstra.

Examples

Using cceps to display the echo signal

Details

In this example cceps It is used to display the echo of the signal. Generate a sinusoidal signal with the frequency 45 Hz and sampling rate 100 Hz. Add an echo signal with half the amplitude and with a delay 0.2 c. Calculate the complex cepstr of the signal. Let’s pay attention to the delayed echo 0.2 with.

import EngeeDSP.Functions: cceps

Fs = 100
t = 0:1/Fs:1.27
s1 = sin.(2*pi*45*t)
s2 = s1 + 0.5*[zeros(20); s1[1:108]]
c1, nd, c2 = cceps(s2)
plot(t, c1, title="Complex cepstrum", legend=false)

cceps

Algorithms

Cepstral analysis is a method of nonlinear signal processing, most often used in speech processing and homomorphic filtering [1]. Function cceps — this is an implementation of algorithm 7.1 from [3].

The table lists the advantages and disadvantages of Fourier and factorization algorithms.

Algorithm Advantages Disadvantages

Fourier Transform

It can be used for any signals.

Phase deployment is required. The output signal is low-frequency.

Factorization

No phase deployment is required. There is no frequency overlap.

It can only be used for short-term signals. The input signal must have a Z-transform with all zeros, without zeros on the unit circle.

In general, the results of these two algorithms cannot be used for mutual verification. They can be used for mutual verification only if the first element of the input data is positive, the Z-transform of the data sequence contains only zeros, all these zeros are inside the unit circle, and the input data sequence is long (or padded with zeros).

Literature

  1. Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time 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 Z-transform. 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.