Algunas preguntas sobre las ventanas galenas slepianas y generalizadas

10

Estoy tratando de agregar documentación para todas las funciones de la ventana en scipy.signal, y estoy atascado en las ventanas Slepian (¿igual que DPSS?) Y Gaussiana generalizada , de las que nunca había oído hablar antes.

Hay dos variables que son parámetros de forma de algún tipo, pen el gaussiano generalizado y widthen el slepiano. ( sigparece ser sigma, la desviación estándar).

2 preguntas:

  1. En lugar de hacer ingeniería inversa y adivinar, ¿alguien puede explicar cómo se llaman estas variables y qué hacen?

  2. ¿Puede explicar para qué son útiles estas ventanas o dónde se usan?

 

def general_gaussian(M, p, sig, sym=True):
    """Return a window with a generalized Gaussian shape.

    The Gaussian shape is defined as ``exp(-0.5*(x/sig)**(2*p))``, the
    half-power point is at ``(2*log(2)))**(1/(2*p)) * sig``.

    """
    if M < 1:
        return np.array([])
    if M == 1:
        return np.ones(1, 'd')
    odd = M % 2
    if not sym and not odd:
        M = M + 1
    n = np.arange(0, M) - (M - 1.0) / 2.0
    w = np.exp(-0.5 * (n / sig) ** (2 * p))
    if not sym and not odd:
        w = w[:-1]
    return w

def slepian(M, width, sym=True):
    """Return the M-point slepian window.

    """
    if (M * width > 27.38):
        raise ValueError("Cannot reliably obtain slepian sequences for"
              " M*width > 27.38.")
    if M < 1:
        return np.array([])
    if M == 1:
        return np.ones(1, 'd')
    odd = M % 2
    if not sym and not odd:
        M = M + 1

    twoF = width / 2.0
    alpha = (M - 1) / 2.0
    m = np.arange(0, M) - alpha
    n = m[:, np.newaxis]
    k = m[np.newaxis, :]
    AF = twoF * special.sinc(twoF * (n - k))
    [lam, vec] = linalg.eig(AF)
    ind = np.argmax(abs(lam), axis=-1)
    w = np.abs(vec[:, ind])
    w = w / max(w)

    if not sym and not odd:
        w = w[:-1]
    return w

Posibles coincidencias:

La función dpss_windows de nipy utiliza NW, el "ancho de banda medio estandarizado correspondiente a 2NW = BW * f0 = BW * N / dt pero con dt tomado como 1"

Usos dpss de Matlabtime_halfbandwidth ¿Es esta la misma ventana? ¿Es time_halfbandwidthlo mismo que width?

Esta definición DPSS tiene "la frecuencia de corte deseada del lóbulo principal en radianes por segundo".ωC

La distribución normal generalizada tiene β (¿igual a dos veces p?) Que se llama parámetro de forma, con distribución normal para β = 1 y distribución de Laplace para β = 2.

endolito
fuente
FWIW Me parece recordar que el DPSS es el mismo (o extremadamente similar a) una ventana de Kaiser. Lo siento, eso es todo lo que tengo. :-)
Spacey
@Mohammad: La ventana de Kaiser es una aproximación del DPSS, creo que porque el verdadero DPSS es computacionalmente caro. en.wikipedia.org/wiki/Window_function#Kaiser_windows
endolith
2
El DPSS es una ventana diseñada con optimización restringida, siendo la restricción el ancho tolerable del lóbulo principal. En efecto, minimiza la energía fuera del lóbulo principal (lóbulos laterales) en relación con una energía fija del lóbulo principal. Tengo un buen libro en casa (fuera de la ciudad por negocios), así que puedo formular una mejor respuesta que valga la pena publicar cuando la revise, pero esa es la esencia.
Bryan

Respuestas:

4

Las secuencias de Slepian son una familia de funciones. La mayoría de los algoritmos calculan 2 * NW - 1 secuencias a la vez para un NW dado. N es el número de puntos en la secuencia y W decide la mitad del ancho del lóbulo principal en el dominio de frecuencia para la transformada de Fourier de una secuencia de Slepian dada. Por lo general, usaría un NO de 3 o 4 para el procesamiento de la señal.

norteWnorteWnorte

Si está estimando el espectro de potencia de una serie temporal estacionaria, los DPSS son el conjunto de ventanas que debe usar.

La función gaussiana generalizada devuelve una función gaussiana similar a potencias sucesivamente más altas dependiendo del parámetro p. A medida que p se eleva a poderes sucesivamente más altos, el gaussiano generalizado se vuelve más estrecho en el dominio del tiempo. La buena propiedad de un gaussiano es que es su propia transformada de Fourier y es la función que logra el límite con respecto al principio de incertidumbre. Una función gaussiana puede ser útil si desea calcular una transformada de Fourier a corto plazo o un espectrograma como estimador de un espectro de potencia variable en el tiempo de una serie temporal no estacionaria.

ncRubert
fuente
"La buena propiedad de un gaussiano es que es su propia transformación de Fourier" Sin p = 1embargo, eso solo es cierto , ¿verdad?
Endolith
-mi-unX2pagsCos(2πkX)reX
1

Un solo ejemplo para refutar GG es su propia transformación. p = 0.5 da una exponencial consecutiva consecutiva que tiene una transformada de 2a / (s ^ 2 + a ^ 2).

En cuanto al bloque DC, lo es. en el dominio de frecuencia Fdcx (w) = 1 - F (w). Esto colocará el rechazo alrededor de DC con el DC cercano en w que no se optimiza en la banda de paso actual. Entonces, solo usaría Dolph para esto para hacer que la banda de paso de banda ancha se convierta en una ondulación igual.

Este es un impulso menos la función de ventana original en el dominio del tiempo. ¿Qué tan grande para el impulso? debe forzar la suma de la secuencia a cero.

Advertencia, la secuencia de longitud uniforme fuerza un cero en la frecuencia de Nyquist, por lo que querrá evitar eso.

Duncan Gray
fuente
-1

La transformada de Fourier de GG también es gaussiana. Usando el teorema de convolución, FT (Gaussian \ times Gaussian) = FT (Gaussian) \ conv FT (Gaussian) = Gaussian \ conv Gaussian = Gaussian. Espero que haya ayudado!

Neuronator
fuente
Sin embargo, este es un gaussiano generalizado, no un gaussiano regular. No es su propia transformación. Ver imágenes: docs.scipy.org/doc/scipy/reference/generated/…
endolith