FFT'de spektral sızıntı neden ortaya çıkıyor?


18

Ben googling ve wikipedia-ing denedim, ama 'Giriş sinyalinin frekansı iki kutu arasında oturuyor çünkü' ötesinde herhangi bir cevap almadım.

Bunun nedeni olduğunu anlıyorum, ancak anlayamadığım şey, sızıntının neden sadece bir bitişik çöp kutusu yerine birkaç bitişik kutuya kadar uzandığı.

Neden bahsettiğimi göstermek için bazı simüle veriler (yazının sonundaki kod): Freq_10

Yukarıda, frekans 10'un sinüs dalgasının (log ölçeğinde çizilen) FFT spektrumu yer almaktadır. Örnekleme oranı birdir ve örnek sayısı 100'dür. Grafik FFT-kaydırılmıştır. Açıkça sadece bin 10'da bir tepe var ve geri kalanı sayısal hata sırasına göre ya da orada.

Freq_10_1

Bu, üretilen 10.1 frekansındaki frekans spektrumudur. Açıkça hemen komşu kutudan daha fazla kutuya 'sızıntı' var.

freq_10_5

Bu, 10.5'lik bir frekansın grafiğidir.

Soru: Neden bu sızıntı var ve neden hemen bitişikteki bölmeden ziyade diğer tüm bölmelere uzanıyor?


Kod, ilgilenen herkes için (Python kodu)

import numpy as np
import matplotlib.pyplot as plt

xFreq = 10.5
xSize = 100.0
xPeriod = xSize/xFreq
x = np.linspace(1,xSize,xSize)

data = np.sin(2*np.pi*x/xPeriod)
fft = np.fft.fft(data)
fft = np.fft.fftshift(fft)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(abs(fft), "o")
ax.set_yscale('log')
plt.show()

xFreqDeğeri 10.0yerine 10.5vb. Olarak değiştirdim .


FFT'nin pencere uzunluğuna tam olarak uymayan herhangi bir sinyal, onu sardığınızda bir süreksizlik yaratır. Süreklilikler veya adım fonksiyonları gibi süreksizlikler tüm frekanslardan bazılarını içerir.
endolit

Yanıtlar:


12

Bir FFT sonlu bir uzunluğa sahiptir ve bu nedenle veri akışı üzerinde varsayılan bir dikdörtgen pencere oluşturur. Zaman alanındaki bir pencere, frekans alanındaki pencerenin dönüşümü ile bir kıvrım ile sonuçlanır. Dikdörtgen bir pencerenin dönüştürülmesinin sonsuz genişliğe sahip bir Sinc fonksiyonu (sin (x) / x) olduğuna dikkat edin. Genişliği sadece 2 kutu değil. Böylece, Sinc fonksiyonunun dalgalanmaları, FFT'nin uzunluğunda mükemmel periyodik olmayan herhangi bir spektral zirveden çok "sızıntı" olarak görünecektir.

Aşağıdaki resim, sinc fonksiyonunun frekans yanıtının bir bölümünü göstermektedir. Ton, kutulardan birinde ortalandığında, diğer tüm noktalar frekans yanıtındaki boş değerlerle sıralanır. Eğer bir bölmede ortalanmamışsa, tüm frekans tepkisini kaydırmak gibidir, bu da diğer bölmelerin frekans yanıtının boş olmayan kısımlarına düşmesine neden olur.

resim açıklamasını buraya girin

Buna bakmanın bir başka yolu, bir FFT'nin, her filtre durdurma bandı zemininin çok sayıda dalgalanmaya sahip olduğu ve kesinlikle merkez frekanstan 1 binden fazla zayıflamada sonsuz olmadığı bir filtre bankası olmasıdır. Dikdörtgen dışındaki bazı pencerelerin (von Hann, vb.) Alt kullanım bantları vardır, bu da popüler kullanımlarının bir nedenidir.


1
Spektral "sızıntı" olarak adlandırılan tam olarak bin merkezli periyodik girişlerin FFT'sinde görünmediğine dikkat edin, çünkü Sinc fonksiyonu diğer tüm bin merkezi frekanslarında (bu filtre çekirdeğine tamamen diktir) FFT temel vektörleri).
hotpaw2

Umarım düzenlemeye aldırmazsınız. Eğer hoşlanmıyorsanız atmaktan çekinmeyin.
Jim Clay

@Jim Clay: Eklenen grafik için teşekkürler. İPhone'umdan nasıl gönderileceğini bulamadım.
hotpaw2

1
Teşekkürler teşekkürler teşekkürler. İçin teşekkür ederiz DEĞİL diyerek sızıntıyı açıklayan "FFT onun giriş dizisi periyodik olduğunu varsayar." 'Periyodik varsayılan' aptallık kavramı ne yazık ki DSP literatüründe çok sık tekrarlanıyor. [-Rick-]

Bazen, giriş periyodikliği varsayımı, örneğin FFT çerçeve uzunluğunun şaft dönüşü eşzamanlı örneklemesi yapılırken (veya sınıf sentetik örnekleri oluştururken) faydalıdır. Ancak, ses (vb.) İle, herhangi bir periyodiklik uzunluğu ile ilgisi olmayan bölümleme ve pencereleme veri çerçeveleri daha yaygındır ve bu varsayımı bu alanlarda çalışmak için genellikle yanlış yapar.
hotpaw2

0

hotpaw2'nin yanıtı iyi ama user5133yorumunda biraz ayrıntılı olarak durmak istiyorum :

"FFT giriş sırasının periyodik olduğunu varsayar" diyerek kaçağı açıklamadığınız için teşekkür ederiz. 'Varsayılan periyodiklik' saçma kavramı ne yazık ki DSP literatüründe çok sık tekrarlanıyor

ve aynı zamanda soruyu da cevaplayın. Bu alanda bir uzman olduğuna dikkat edin --- yorum yapmak, düzeltmek veya onaylamaktan çekinmeyin.

Z{1,2,...,N-}

X(ω)=Σn=-x[n]e-benωn.

NNZ

Xk =def n=0N1xne2πikn/N,kZ
X(2πk/N)n{1,2,,N}x[n]w[n]wn{1,,N}

Ancak bir ürünün Fourier dönüşümü, Fourier dönüşümlerinin evrimi:

F{fg}=F{f}F{g}

sinc

w(f)ejωtdt=ττejωtdt=2τsinc(ωτ)

sinc


@ user5133 artık takılmıyor gibi görünüyor. ama Rick'in minnettarlığı yanlış yerleştirildi: "Sızıntıyı AÇIKLAMADIĞIN için teşekkür ederim," FFT giriş sırasının periyodik olduğunu varsayar. " Bu 'varsayılan periyodiklik' saçma kavramı ne yazık ki DSP literatüründe çok sık tekrarlanıyor. ” Yanılıyor. DFT kesinlikle kendisine iletilen sonlu uzunluktaki verileri periyodik olarak uzatır. DFT , kendisine iletilen verilerin periyodik bir dizinin bir periyodu olduğunu varsayar.
robert bristow-johnson
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.