DC'yi reddetmek için iyi bir FFT pencere işlevi nedir?


9

Bir sinyalin güç zarfının ne olduğunu analiz etmek için bir FFT kullanıyorum ( içeren proje hakkında bilgi için buraya bakın ) ve güç numaraları her zaman pozitif olduğundan, DC bileşenini ortadan kaldırmak için bir pencere kullanmak istiyorum 50/50 pozitif ve negatif fonksiyon, normal all-pozitif fonksiyona karşı.

Ben " düz üst " fonksiyonunu aldım , a0önyargıları kaldırdım ve kosinüslerden sinüslere dönüştürdüm, ama bunun optimal (hatta anlamlı) olduğundan emin değilim.

Herhangi bir öneri?


9
sadece pencereden önce ortalama çıkarmak?
endolit

Yanıtlar:


2

En yaygın sürekli pencere fonksiyonlarının (von Hann, vb.) 1. türevi DC'yi reddedecektir, ancak yine de orijinal pencere fonksiyonuna benzer bir büyüklük frekans cevabına sahip olacaktır; bu nedenle, fazla ilgili değilse, pencere seçimi için orijinal "iyilik" ölçütlerinizi kullanmaya devam edebilirsiniz.


2
Bu yanıt esas olarak doğru olmasına rağmen, daha çok bir yorumdur, bu yüzden genişletmek çok yararlı olacaktır.
Fonon

Ancak sorumu bir dereceye kadar ele alıyor.
Daniel R Hicks

1
Pencereden önce sadece ortalamayı çıkarmak yerine bunu yapmak için bir neden var mı?
nibot

JasonR'ın cevabı doğruysa, DC'yi pencere işlevi aracılığıyla reddetme (ve yine de iyi bir spektral tahmin alma) fikri işe yaramaz.
nibot

@nibot: Olası bir neden, bir toplam artı çıkarmanın mümkün olmaması olabilir (örneğin, bazı sabit donanım boru hattında veya gecikmede mevcut değildir.)
hotpaw2

7

Büyük bir DC bileşenine sahip bir sinyal üzerinde spektral analiz yapmakla ilgileniyorsanız ve bu DC tepe noktasını bastırmak istiyorsanız, bir pencere işlevi istediğiniz şey değildir. Diğer bazı cevapların belirttiği gibi, bir yüksekgeçiren filtre (veya farklı bir şekilde görüntülendiğinde, çentik sıfır frekansta bir çentik filtresi) uygun bir çözümdür.

Nedenini anlamak için, her DFT çıkışının frekans yanıtına bir pencere işlevinin uygulanmasının ne yaptığını düşünmeniz gerekir. DFT şu şekilde tanımlanır:

X[k]=Σn=0N--1x[n]e-j2πnkN-

DFT'nin nasıl çalıştığına dair bir yorum, N- arasında eşit aralıklı frekanslar -fs2 ve fs2. Yukarıdaki toplamı aşağıdaki gibi yeniden düzenleyin:

X[k]=Σn=0N--1xk[n]

nerede:

xk[n]=x[n]e-j2πnkN-

Böylece k-DFT çıkışı ilk olarak giriş sinyali alınarak üretilir x[n] ve frekansta karmaşık bir üstel ile çarpılması -2πkN- aşağı dönüştürülmüş bir sinyal vermek xk[n]. Elde edilen sinyal daha sonraN-- DFT çıktısını vermek için örnek penceresi X[k]. Bu, dürtü yanıtı şu şekilde tanımlanabilen hareketli bir ortalama filtredir (bazen bir vagon filtresi olarak da adlandırılır):

b[n]={1, x=0,1,...,N--10, aksi takdirde

Boxcar filtrenin büyüklük yanıtı , bu dürtü yanıtının ayrık zamanlı Fourier dönüşümü (DTFT) alınarak bulunabilir :

|'H(f)|=|günah(N-πffs)günah(πffs)|

Bu bir Dirichlet çekirdeğidir ve bazen bir içgüdüm işlevine benzediği, ancak bir içgüdünün yapmadığı periyodik olarak tekrarladığı için bazen "periyodik bir içsel" olarak adlandırılır. Bu ifade, her DFT çıkışının büyüklük yanıtını verir;filgili çıkış bölmesinin merkez frekansından frekans kayması olarak ölçülür. Bu, spektral sızıntı etkisini göstermektedir; her bir DFT çıkışı, her bir çıkışın sadece ayrı merkez frekansını değil, giriş sinyalinin spektrumunun bir miktar sürekli alanını kapsayan bir frekans cevabına sahiptir.

Şimdi, giriş sinyaline bir pencere fonksiyonu uygularsanız işlerin nasıl değiştiğini düşünün x[n] DFT yapmadan önce:

X[k]=Σn=0N--1w[n]x[n]e-j2πnkN-=Σn=0N--1w[n]xk[n]

Pencere fonksiyonu yerinde iken, aşağı çevrilmiş xk[n]pencere fonksiyonu tarafından açıklanan dürtü yanıtı ile bir FIR filtresinden etkili bir şekilde geçmektedir. Bu nedenle, DFT'nin çıktı başına büyüklük yanıtı:

|'H(f)|=|W(f)|

nerede W(f) pencere fonksiyonunun DTFT'si w[n]. Şimdi DC'de sıfır olan bir pencere işlevini seçtiyseniz ve bunu önceden ayarlamak için kullandıysanızx[n]DFT'den önce, sonuçta sadece spektrumda DC'yi değil, DFT çıkışlarının her birinin merkez frekanslarını da iptal etmenin istenmeyen etkisine neden olursunuz. Muhtemelen istediğin bu değil.

Bu nedenle, sinyalin DC bileşenini gerçekten iptal etmek istiyorsanız, zaman alanı pencereleme yerine başka bir tür ön işleme yoluyla kaldırmak, gitmenin yoludur. Örneğin, çok düşük bir kesme frekansına sahip doğrusal bir yüksekgeçiren filtre kullanabilir veya tahmini ortalamayı önce sinyalden çıkarabilirsiniz. Bu yöntemler arasında seçim yapmak, sisteminizin sahip olduğu diğer kısıtlamalara dayanmalıdır.


3

Bir pencere işlevi kullanmak DC kaldırmak için iyi bir yol olduğunu sanmıyorum. Endolitten bahsedildiği gibi, yaygın bir yöntem, pencereleme öncesi ortalamanın çıkarılmasıdır. Başka bir seçenek de, analizden önce sinyalinize yüksek frekanslı bir filtre uygulamak, örneğin yaklaşık 10 Hz'lik bir kesme frekansı ile olacaktır.


Sinyal analog formda yoksa, yüksek geçiren bir filtre uygulamak bir seçenek değildir. Ama ben (ve endolit) ortalamanın çıkarılmasının doğru olması gerektiğine inanıyorum, özellikle de uç noktaları sıfıra çeken bir pencere kullanıldığında. (Ve yüksek geçişli bir filtrenin daha düşük bir kesime ihtiyacı olacaktır, çünkü sinyali belki 0.01 Hz'e kadar analiz ediyorum.)
Daniel R Hicks

2
Neden bir yüksekgeçiren filtre uygulamak için bir analog sinyale ihtiyacınız olduğunu düşünüyorsunuz? Dijital bir HPF oluşturmak kesinlikle mümkündür.
Jason R

@JasonR - Bu tür şeylerde oldukça cahil olduğumu itiraf edeceğim (sinyallerim kursları 40 yıl önceydi, FFT ve ark.'dan hemen önce), ama bana öyle geliyor ki, dijital bir yüksek geçiren filtre oluşturmak için ben ilk önce sinyalin Fourier dönüşümünü üretmek zorundadır.
Daniel R Hicks

1
Durum böyle değil; Eğer bir yüksek geçiren filtre sadece yanısıra Aslında, bir alçak, band geçiren, vb üretebilir, bir alçak geçiren almak için teknikler vardır filtre prototip ve benzer tepkisi veren bir yüksek geçiren filtre çevirmektedir. Filtre tasarımı için çoğu yazılım (örn. MATLAB) her tür filtreyi yapmak için kullanılabilir.
Jason R

1
Bir yüksekgeçiren filtre uygulamasının farklılaşma gerektirdiği izlenimini nereden aldığınızdan emin değilim. Farklılaşma bir yüksek geçişli işlemdir, ancak bir yüksekgeçiren filtre için uygun bir uygulama değildir (frekans tepkisi bir rampa olduğundan, gürültünün olduğu yerlerde daha yüksek frekansları güçlendirir). Wikipedia makalesi yüksek geçiren filtreler üzerinde iyi bir başlangıç olacaktır.
Jason R
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.