Main Content

Análisis de Cepstrum

¿Qué es un Cepstrum?

El análisis de cepstrum es una técnica de procesamiento de señal es manual con una variedad de aplicaciones en áreas como el procesamiento de voz e imagen.

La secuencia de una secuencia se calcula mediante la búsqueda del logarritmo natural complejo de la transformación de Fourier de , a continuación, la transformación inversa de Fourier de la secuencia resultante:cepstrum complejoxx

<math display="block">
<mrow>
<munderover accent="true">
<mrow>
<mi>x</mi>
</mrow>
<mrow></mrow>
<mrow>
<mo>ˆ</mo>
</mrow>
</munderover>
<mo>=</mo>
<mrow>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</mfrac>
</mrow>
<msubsup>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mo>-</mo>
<mi>π</mi>
</mrow>
<mrow>
<mi>π</mi>
</mrow>
</msubsup>
<mi mathvariant="normal">log</mi>
<mo stretchy="false">[</mo>
<mi>X</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mi>j</mi>
<mi>ω</mi>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mo stretchy="false">]</mo>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mi>j</mi>
<mi>ω</mi>
<mi>n</mi>
</mrow>
</msup>
<mspace width="0.16666666666666666em"></mspace>
<mi>d</mi>
<mi>ω</mi>
<mo>.</mo>
</mrow>
</math>

La función de caja de herramientas realiza esta operación, estimando el cepstrum complejo para una secuencia de entrada.cceps Devuelve una secuencia real del mismo tamaño que la secuencia de entrada.

Intente usar cceps en una aplicación de detección de eco. En primer lugar, cree una onda sinusoidal de 45 Hz muestreada a 100 Hz. Añadir un eco de la señal, con la mitad de la amplitud, 0,2 segundos después del comienzo de la señal.

t = 0:0.01:1.27; s1 = sin(2*pi*45*t); s2 = s1 + 0.5*[zeros(1,20) s1(1:108)];

Calcular y trazar el cepstrum complejo de la nueva señal.

c = cceps(s2); plot(t,c)

El cepstrum complejo muestra un pico en 0.2 segundos, indicando el eco.

La de una señal, a veces llamada simplemente el cepstrum, se calcula determinando el laritmo natural de magnitud de la transformación De Fourier de, luego obteniendo la transformación inversa de Fourier de la secuencia resultante:cepstrum realxx

<math display="block">
<mrow>
<msub>
<mrow>
<mi>c</mi>
</mrow>
<mrow>
<mi>x</mi>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</mfrac>
</mrow>
<msubsup>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mo>-</mo>
<mi>π</mi>
</mrow>
<mrow>
<mi>π</mi>
</mrow>
</msubsup>
<mi mathvariant="normal">log</mi>
<mrow>
<mo>|</mo>
<mi>X</mi>
<mo stretchy="false">(</mo>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mi>j</mi>
<mi>ω</mi>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mo>|</mo>
</mrow>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mi>j</mi>
<mi>ω</mi>
<mi>n</mi>
</mrow>
</msup>
<mspace width="0.16666666666666666em"></mspace>
<mi>d</mi>
<mi>ω</mi>
<mo>.</mo>
</mrow>
</math>

La función de caja de herramientas realiza esta operación, devolviendo el cepstrum real para una secuencia.rceps La secuencia devuelta es un vector de valor real del mismo tamaño que el vector de entrada.

La función también devuelve una secuencia de fase mínima única que tiene el mismo cepstrum real que la entrada.rceps Para obtener tanto el cepstrum real como la reconstrucción de fase mínima para una secuencia, utilizar, donde está el cepstrum real y es la reconstrucción de fase mínima de .[y,ym] = rceps(x)yymx En el ejemplo siguiente se muestra que una salida de es una secuencia de fase mínima única con el mismo cepstrum real que .rcepsx

y = [4 1 5];                 % Non-minimum phase sequence [xhat,yhat] = rceps(y); xhat2 = rceps(yhat);  [xhat' xhat2']
ans = 3×2

    1.6225    1.6225
    0.3400    0.3400
    0.3400    0.3400

Complejo Inverso Cepstrum

Para invertir el cepstrum complejo, utilice la función.icceps La inversión se complica por el hecho de que la función realiza una modificación de fase dependiente de los datos para que la fase desencapsulada de su entrada sea continua a una frecuencia cero.cceps La modificación de fase es equivalente a un retraso entero. Este término de retardo es devuelto por si usted pide una segunda salida:cceps

x = 1:10; [xhat,delay] = cceps(x)
xhat = 1×10

    2.2428   -0.0420   -0.0210    0.0045    0.0366    0.0788    0.1386    0.2327    0.4114    0.9249

delay = 1 

Para invertir el cepstrum complejo, utilice con el parámetro de retardo original:icceps

icc = icceps(xhat,2)
icc = 1×10

    2.0000    3.0000    4.0000    5.0000    6.0000    7.0000    8.0000    9.0000   10.0000    1.0000

Como se muestra en el ejemplo anterior, con cualquier modificación del cepstrum complejo, el término de retardo original puede ya no ser válido. Usted no será capaz de invertir el cepstrum complejo exactamente.

Consulte también

| |