Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

cceps

Análisis de Cepstral complejo

Sintaxis

xhat = cceps(x)
[xhat,nd] = cceps(x)
[xhat,nd,xhat1] = cceps(x)
[...] = cceps(x,n)

Descripción

El análisis Cepstral es una técnica de procesamiento de señal no lineal que se aplica con mayor frecuencia en el procesamiento del habla y el filtrado homomórfico.[1]

Nota

sólo funciona con datos reales.cceps

xhat = cceps(x) Devuelve el cepstrum complejo de la secuencia de datos real utilizando la transformada de Fourier.x La entrada se altera, mediante la aplicación de un término de fase lineal, para no tener discontinuidad de fase en ± radianes.π Es decir, se desplaza circularmente (después de cero relleno) por algunas muestras, si es necesario, para tener fase cero en π radianes.

[xhat,nd] = cceps(x) Devuelve el número de muestras de retardo (circular) añadidas antes de encontrar el cepstrum complejo.ndx

[xhat,nd,xhat1] = cceps(x) Devuelve un segundo cepstrum complejo, calculado utilizando un algoritmo de factorización alternativo.xhat1[1][2] Este método solo se puede aplicar a las señales de duración finita. Vea la sección de algoritmos a continuación para una comparación de los métodos de Fourier y factorización de la computación del complejo cepstrum.

[...] = cceps(x,n) cero almohadillas a la longitud y devuelve el cepstrum complejo de longitud de.xnnx

Ejemplos

contraer todo

Este ejemplo utiliza para mostrar un eco.cceps Generar un seno de frecuencia 45 Hz, muestreado a 100 Hz. Agregue un eco con la mitad de la amplitud y 0,2 s más tarde. Calcule el complejo cepstrum de la señal. Observe el eco en 0,2 s.

Fs = 100; t = 0:1/Fs:1.27;  s1 = sin(2*pi*45*t);   s2 = s1 + 0.5*[zeros(1,20) s1(1:108)];  c = cceps(s2);  plot(t,c) xlabel('Time (s)') title('Complex cepstrum')

Algoritmos

es una implementación del algoritmo 7,1 in.cceps[3] Un extenso programa de Fortran reduce a estas tres líneas de código, que componen el núcleo de:MATLAB®cceps

h = fft(x); logh = log(abs(h)) + sqrt(-1)*rcunwrap(angle(h)); y = real(ifft(logh)); 

Nota

en el segmento de código anterior es una versión especial de que sustrae una línea recta de la fase. es una función local dentro y no está disponible para su uso desde la línea de comandos.rcunwrapunwraprcunwrapccepsMATLAB

La siguiente tabla enumera los pros y los contras de los algoritmos de Fourier y factorización.

AlgoritmoProsContras
FourierSe puede utilizar para cualquier señal.Requiere desencapsular de fase. La salida está alisada.
FactorizaciónNo requiere la desencapsulación de fase. Sin aliasingSólo se puede utilizar para señales de corta duración. La señal de entrada debe tener una transformada Z All-Zero sin ceros en el círculo de la unidad.

En general, no puede utilizar los resultados de estos dos algoritmos para verificarnos mutuamente. Puede usarlos para verificar unos a otros sólo cuando el primer elemento de los datos de entrada es positivo, la transformación Z de la secuencia de datos tiene sólo ceros, todos estos ceros están dentro del círculo de la unidad y la secuencia de datos de entrada es larga (o rellena con ceros).

Referencias

[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.

Consulte también

| | |

Introducido antes de R2006a