Slepian ve genelleştirilmiş gauss pencereleri hakkında birkaç soru


10

Ben scipy.signal tüm pencere fonksiyonları için belge eklemek için çalışıyorum , ve ben daha önce hiç duymadığım Slepian (DPSS ile aynı?) Ve Genelleştirilmiş Gaussian pencereler, takılı kaldı.

pGenelleştirilmiş Gauss ve widthSlepian'da bazı türlerin şekil parametreleri olan iki değişken vardır . ( sigstandart sapma sigma gibi görünüyor.)

2 soru:

  1. Benim tersine mühendislik ve tahmin yapmak yerine, herkes bu değişkenlerin ne denir ve ne yaptığını açıklayabilir mi?

  2. Bu pencerelerin ne için yararlı olduğunu veya nerede kullanıldığını açıklayabilir misiniz?

 

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

Olası eşleşmeler:

nipy'nin dpss_windows işleviNW , "2NW = BW * f0 = BW * N / dt'ye karşılık gelen ancak dt 1 olarak alınan standartlaştırılmış yarım bant genişliği kullanır "

Matlab'ın dpss kullanımları time_halfbandwidthBu aynı pencere mi? İle time_halfbandwidthaynı şey widthmi?

Bu DPSS tanımı vardır "arzu edilen ana lob kesme saniye başına radyan cinsinden frekansı".ωc

Genelleştirilmiş normal dağılım , pparameter = 1 için normal dağılım ve β = 2 için Laplace dağılımı ile şekil parametresi olarak adlandırılan β (iki kez eşit ?) 'E sahiptir.


FWIW DPSS'nin bir Kaiser penceresi ile aynı (veya son derece benzer) olduğunu hatırlıyorum. Üzgünüm tüm sahip olduğum bu. :-)
Spacey

@Mohammad: Kaiser penceresi DPSS'nin bir tahmini, bence gerçek DPSS hesaplama açısından pahalı mı? en.wikipedia.org/wiki/Window_function#Kaiser_windows
endolith

2
DPSS, kısıtlı optimizasyon ile tasarlanmış bir penceredir, kısıtlama ana lobun tolere edilebilir genişliğidir. Gerçekte, sabit bir ana lob enerjisine göre ana lobun (yan loblar) dışındaki enerjiyi en aza indirir. Ben bir iyi bir kitap evde (iş şehir dışında), bu yüzden ben ne zaman gözden geçirme layık daha iyi bir cevap formüle edebilirsiniz ama bu jist.
Bryan

Yanıtlar:


4

Slepian dizileri bir işlevler ailesidir. Çoğu algoritma, belirli bir KB için aynı anda 2 * KB - 1 dizisini hesaplar. N, dizideki noktaların sayısıdır ve W, belirli bir Slepian dizisinin Fourier dönüşümü için frekans alanındaki ana lobun genişliğinin yarısına karar verir. Genellikle sinyal işlemeniz için 3 veya 4 NW kullanırsınız.

Scipy'de, (Python kodunda m) ve (Python kodunda genişlik) parametresini ayrı olarak isterken matlab'da zaman bant genişliği ürünü tek bir parametre olarak girersiniz. Bu mantıklıdır çünkü Slepian dizilerini genellikle sabit bir pencere boyutu olan olarak hesaplıyorsunuz .W N W NNWNWN

Sabit bir zaman serisinin güç spektrumunu tahmin ediyorsanız, DPSS kullanmanız gereken pencere kümesidir.

Genelleştirilmiş Gauss işlevi, p parametresine bağlı olarak art arda yüksek güçlere yükseltilmiş Gauss benzeri bir işlev döndürür. P ardışık olarak daha yüksek güçlere yükseltildikçe, genelleştirilmiş Gaussian zaman alanında daralır. Bir Gaussian'ın güzel özelliği, kendi Fourier dönüşümü olması ve belirsizlik ilkesiyle ilgili limite ulaşan işlev olmasıdır. Durağan olmayan bir zaman serisinin zamanla değişen güç spektrumu için bir tahminci olarak kısa süreli bir Fourier dönüşümü veya spektrogramı hesaplamak isterseniz bir Gauss işlevi yararlı olabilir.


"Bir Gaussian'ın güzel özelliği, kendi Fourier dönüşümü olmasıdır. Ancak bu sadece doğru p = 1, değil mi?
endolith

eax2pcos(2πkx)dx

1

GG'yi çürütmek için tek bir örnek kendi dönüşümüdür. p = 0.5, 2a / (s ^ 2 + a ^ 2) dönüşümü olan sıradan arka arkaya üs verir.

DC blok gelince, öyle. Fdcx (w) = 1 - F (w) frekans alanında. Bu, şimdi geçiş bandında optimize edilmeyen w'ye yakın DC ile reddetmeyi DC etrafında koyacaktır. Bu yüzden Dolph'i sadece geniş bant geçiş bandının eşit dalgalanma haline getirmek için kullanırım.

Bu, etki alanında eksi orijinal pencere işlevini zaman alanında geri döndürür. Dürtü için ne kadar büyük? dizinin toplamını sıfıra zorlamalıdır.

Uyarı, çift uzunluk dizisi Nyquist frekansında bir sıfırı zorlar, bu yüzden bundan kaçınmak isteyeceksiniz.


-1

GG'nin Fourier dönüşümü de bir Gauss'tur. Evrişim teoremini kullanarak FT (Gaussian \ times Gaussian) = FT (Gaussian) \ conv FT (Gaussian) = Gaussian \ conv Gaussian = Gaussian. Umut etmek bu yardım etmek!


Bu, genelleştirilmiş bir Gauss'lu olmakla birlikte, normal bir Gaussian değil. Bu kendi dönüşümü değil. Resimlere bakınız docs.scipy.org/doc/scipy/reference/generated/...
Endolit
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.