Jaka jest dobra funkcja okna FFT do odrzucania DC?

9

Korzystam z FFT, aby przeanalizować, co jest zasadniczo obwiednią mocy sygnału (patrz tutaj, aby uzyskać informacje na temat zawierającego projekt), a ponieważ liczby mocy są zawsze dodatnie, aby wyeliminować składnik DC, chciałbym użyć okna funkcja, która jest 50/50 dodatnia i ujemna, w porównaniu do zwykłej funkcji całkowicie dodatniej.

Wziąłem funkcję „ płaskiego wierzchołka ”, usunąłem błąd a0systematyczny i przekonwertowałem go z cosinusów na sinusoidy, ale nie jestem pewien, czy jest to optymalne (czy nawet znaczące).

Jakieś sugestie?

Daniel R. Hicks
źródło
9
odjąć średnią przed okienkowaniem?
endolith

Odpowiedzi:

2

Pierwsza pochodna najpopularniejszych funkcji ciągłego okna (von Hann, itp.) Odrzuci prąd stały, ale nadal będzie miała odpowiedź częstotliwościową wielkości zbliżoną do pierwotnej funkcji okna; więc nadal możesz używać oryginalnych kryteriów „dobroci” do wyboru okna, jeśli nie jest to związane z fazą.

hotpaw2
źródło
2
Chociaż ta odpowiedź jest głównie poprawna, jest to raczej komentarz, więc rozwinięcie jej byłoby bardzo przydatne.
Fonon
Jednak do pewnego stopnia odnosi się do mojego pytania.
Daniel R Hicks
1
Czy istnieje powód, aby to zrobić zamiast odejmować średnią przed okienkowaniem?
nibot
Jeśli odpowiedź JasonR jest poprawna, to pomysł odrzucenia DC za pomocą funkcji okna (i wciąż uzyskiwania dobrej oceny spektralnej) nie zadziała.
nibot
@nibot: Możliwym powodem może być to, że suma plus odejmowanie nie jest możliwe (na przykład niedostępne w niektórych ustalonych
potokach
7

Jeśli zajmujesz się analizą spektralną sygnału z dużą składową prądu stałego i chcesz stłumić ten szczyt prądu stałego, funkcja okna nie jest tym, czego potrzebujesz. Jak zauważyły ​​niektóre inne odpowiedzi, filtr górnoprzepustowy (lub, inaczej patrząc, filtr wycinający z wycięciem na zerowej częstotliwości) jest odpowiednim rozwiązaniem.

Aby zrozumieć dlaczego, musisz pomyśleć o tym, co zastosowanie funkcji okna ma do odpowiedzi częstotliwościowej każdego wyjścia DFT. DFT jest zdefiniowany jako:

X[k]=n=0N.-1x[n]mi-jot2)πnkN.

Jedną z interpretacji działania DFT jest zbiór filtrów w N. równomiernie rozmieszczone częstotliwości między -fas2) i fas2). Przekształć powyższą sumę w następujący sposób:

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

gdzie:

xk[n]=x[n]mi-jot2)πnkN.

Tak więc k-te wyjście DFT jest generowane przez pobranie sygnału wejściowego x[n] i pomnożenie go przez złożony wykładniczy z częstotliwością -2)πkN. w celu uzyskania sygnału poddanego konwersji w dół xk[n]. Otrzymany sygnał jest następnie sumowany nadN.-prób okno, aby uzyskać wynik DFT X[k]. Jest to skutecznie filtr średniej ruchomej (czasem nazywany filtrem boxcar), którego odpowiedź impulsową można opisać jako:

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

Odpowiedź wielkościową filtra boxcar można znaleźć, biorąc dyskretną transformatę Fouriera (DTFT) tej odpowiedzi impulsowej:

|H.(fa)|=|grzech(N.πfafas)grzech(πfafas)|

Jest to jądro Dirichleta i jest czasami określane jako „okresowy sinc”, ponieważ wygląda trochę jak funkcja sinc, ale okresowo się powtarza, czego nie robi sinc. To wyrażenie podaje odpowiedź wielkościową każdego wyjścia DFT, gdziefajest mierzony jako przesunięcie częstotliwości od częstotliwości środkowej odpowiedniego przedziału wyjściowego. To ilustruje efekt wycieku widmowego ; każde wyjście DFT ma charakterystykę częstotliwościową, która pokrywa pewien ciągły pasmo widma sygnału wejściowego, a nie tylko dyskretną częstotliwość środkową każdego wyjścia.

Teraz zastanów się, jak to się zmieni, jeśli zastosujesz funkcję okna do sygnału wejściowego x[n] przed wykonaniem DFT:

X[k]=n=0N.-1w[n]x[n]mi-jot2)πnkN.=n=0N.-1w[n]xk[n]

Po włączeniu funkcji okna konwertowany w dół xk[n]skutecznie przechodzi przez filtr FIR z odpowiedzią impulsową opisaną przez funkcję okna. Tak więc odpowiedź wielkości DFT na wyjście wynosi:

|H.(fa)|=|W.(fa)|

gdzie W.(fa) DTFT funkcji okna w[n]. Teraz zauważ, że jeśli wybrałeś funkcję okna, która miała zero w DC i użyłeś jej do przedwczesnego użyciax[n]przed DFT, faktycznie spowodowałbyś niezamierzony efekt wyzerowania nie tylko DC w widmie wynikowym, ale częstotliwości środkowych każdego z wyjść DFT. Prawdopodobnie nie tego chcesz.

Tak więc, jeśli naprawdę chcesz po prostu anulować komponent DC sygnału, usunięcie go za pomocą innego rodzaju przetwarzania wstępnego, a nie okienkowania w dziedzinie czasu, jest dobrym rozwiązaniem. Możesz na przykład użyć liniowego filtra górnoprzepustowego o bardzo niskiej częstotliwości odcięcia lub odjąć najpierw szacunkową średnią od sygnału. Wybór między tymi metodami powinien opierać się na innych ograniczeniach systemu.

Jason R.
źródło
3

Nie sądzę, aby użycie funkcji okna było dobrym sposobem na usunięcie DC. Jak wspomniano w endolicie, powszechną metodą jest odjęcie średniej przed okienkowaniem. Inną opcją byłoby zastosowanie filtra górnoprzepustowego do sygnału przed analizą, powiedzmy, z częstotliwością odcięcia około 10 Hz.

sznurek
źródło
Zastosowanie filtra górnoprzepustowego nie jest opcją, jeśli sygnał nie istnieje w formie analogowej. Ale wierzę, że ty (i endolit) masz rację, że odejmowanie średniej powinno działać, szczególnie jeśli używane jest również okno, które ściąga punkty końcowe do zera. (A filtr górnoprzepustowy wymagałby niższego odcięcia, biorąc pod uwagę, że analizuję sygnał do może 0,01 Hz.)
Daniel R Hicks
2
Dlaczego uważasz, że potrzebujesz sygnału analogowego, aby zastosować filtr górnoprzepustowy? Z pewnością możliwe jest stworzenie cyfrowego HPF.
Jason R
@JasonR - Przyznaję, że jestem dość ignorantem w takich sprawach (moje kursy sygnałów były 40 lat temu, na długo przed FFT i innymi), ale wydaje mi się, że aby stworzyć cyfrowy filtr górnoprzepustowy I najpierw musiałbym wytworzyć transformatę Fouriera sygnału.
Daniel R Hicks
1
W ogóle tak nie jest; możesz wygenerować filtr górnoprzepustowy, a także dolnoprzepustowy, pasmowy itp. W rzeczywistości istnieją techniki pobierania prototypu filtra dolnoprzepustowego i przekształcania go w filtr górnoprzepustowy o analogicznej odpowiedzi. Większość oprogramowania do projektowania filtrów (np. MATLAB) może być używana do tworzenia wszystkich typów filtrów.
Jason R
1
Nie jestem pewien, gdzie masz wrażenie, że wdrożenie filtra górnoprzepustowego wymaga różnicowania. Różnicowanie jest operacją górnoprzepustową, ale nie jest odpowiednią implementacją dla filtra górnoprzepustowego (ponieważ jego charakterystyka częstotliwościowa jest rampą, co powoduje, że wzmacnia wyższe częstotliwości, w których często występuje szum). Artykuł w Wikipedii na temat filtrów górnoprzepustowych byłby dobrym początkiem.
Jason R