Kilka pytań o Slepian i uogólnione okna gaussowskie

10

Próbuję dodać dokumentację dla wszystkich funkcji okna w scipy.signal, a ja utknęłam na Slepiana (tak samo jak DPSS?) I uogólnione Gaussa okna, które nigdy wcześniej nie słyszał.

Istnieją dwie zmienne, które są pewnego rodzaju parametrami kształtu, pw uogólnionym Gaussa i widthSlepianie. ( sigwydaje się, że to sigma, odchylenie standardowe).

2 pytania:

  1. Czy zamiast mnie odwrócić inżynierię i zgadywanie, czy ktoś może wyjaśnić, jak nazywają się te zmienne i co robią?

  2. Czy możesz wyjaśnić, do czego te okna są przydatne lub gdzie są używane?

 

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

Możliwe dopasowania:

nipy używa funkcji dpss_windowsNW , „znormalizowana połowa szerokości pasma odpowiada 2NW = BW * f0 = BW * N / dt, ale dt przyjmuje się jako 1”

Matlab używa dpsstime_halfbandwidth Czy to jest to samo okno? Czy to time_halfbandwidthto samo co width?

Ta definicja DPSS ma "żądaną częstotliwość odcięcia płata głównego w radianach na sekundę".ωdo

Uogólniony rozkład normalny ma β (równy dwukrotności p?), Który jest po prostu nazywany parametrem kształtu, z rozkładem normalnym dla β = 1 i rozkładem Laplace'a dla β = 2.

endolit
źródło
FWIW Wydaje mi się, że pamiętam, że DPSS jest taki sam (lub bardzo podobny) do okna Kaiser. Przepraszam, że to wszystko co mam. :-)
Spacey,
@Mohammad: Okno Kaiser jest przybliżeniem DPSS, myślę, że ponieważ prawdziwy DPSS jest drogi obliczeniowo? en.wikipedia.org/wiki/Window_function#Kaiser_windows
endolith
2
DPSS jest oknem zaprojektowanym z ograniczoną optymalizacją, przy czym ograniczeniem jest tolerowana szerokość głównego płata. W efekcie minimalizuje energię poza głównym płatem (linie boczne) w stosunku do ustalonej energii głównego płata. Mam dobrą książkę w domu (poza miastem w interesach), więc mogę sformułować lepszą odpowiedź, wartą opublikowania, kiedy recenzuję, ale to jest jej największa zaleta.
Bryan

Odpowiedzi:

4

Sekwencje Slepian są rodziną funkcji. Większość algorytmów oblicza 2 * NW - 1 sekwencje jednocześnie dla danej NW. N jest liczbą punktów w sekwencji, a W decyduje o połowie szerokości płata głównego w dziedzinie częstotliwości dla transformaty Fouriera danej sekwencji Slepian. Zazwyczaj do przetwarzania sygnału używasz NW 3 lub 4.

N.W.N.W.N.

Jeśli szacujesz spektrum mocy stacjonarnego szeregu czasowego, DPSS to zestaw okien, których powinieneś użyć.

Uogólniona funkcja Gaussa zwraca funkcję podobną do Gaussa podniesioną do sukcesywnie wyższych mocy w zależności od parametru p. Gdy p wzrasta do sukcesywnie wyższych mocy, uogólniony gaussian staje się węższy w dziedzinie czasu. Zaletą Gaussa jest to, że jest to jego własna transformacja Fouriera i jest to funkcja, która osiąga limit dotyczący zasady nieoznaczoności. Funkcja Gaussa może być użyteczna, jeśli chcesz obliczyć krótkotrwałą transformatę Fouriera lub spektrogram jako estymator zmiennego w czasie widma mocy niestacjonarnych szeregów czasowych.

ncRubert
źródło
„Zaletą Gaussa jest to, że jest to jego własna transformacja Fouriera”. Dotyczy to jednak tylko p = 1, prawda?
endolit
-mi-zax2)pdoos(2)πkx)rex
1

Jedynym przykładem obalenia GG jest jego własna transformacja. p = 0,5 daje zwykły wykładniczy zwrotny, który ma transformację 2a / (s ^ 2 + a ^ 2).

Jeśli chodzi o blok prądu stałego, to jest. w dziedzinie częstotliwości Fdcx (w) = 1 - F (w). Spowoduje to, że odrzucenie wokół prądu stałego z niemal stałym prądem stałym stanie się niezoptymalizowane w pasmie teraz. Używałbym do tego Dolpha, aby szerokopasmowe pasmo stało się równe.

To impuls minus pierwotna funkcja okna z powrotem w dziedzinie czasu. Jak duży dla impulsu? musi zmusić sumę sekwencji do zera.

Ostrzeżenie: sekwencja parzystej długości wymusza zero przy częstotliwości Nyquista, więc będziesz tego chciał uniknąć.

Duncan Gray
źródło
-1

Transformacja Fouriera GG jest także gaussowską. Korzystając z twierdzenia o splotie, FT (Gaussian \ razy Gaussian) = FT (Gaussian) \ conv FT (Gaussian) = Gaussian \ conv Gaussian = Gaussian. Mam nadzieję, że to pomogło!

Neuronator
źródło
Jest to jednak uogólniony gaussowski, a nie zwykły gaussowski. To nie jest jego własna transformacja. Zobacz zdjęcia: docs.scipy.org/doc/scipy/reference/generated/...
endolit