Do czego służy okno Hamming?

Pracuję z kodem, który wykonuje transformatę Fouriera (aby obliczyć cepstrum próbki audio). Zanim obliczy transformatę Fouriera, zastosuje okno Hamminga do próbki:

for(int i = 0; i < SEGMENTATION_LENGTH;i++){
    timeDomain[i] = (float) (( 0.53836 - ( 0.46164 * Math.cos( TWOPI * (double)i  / (double)( SEGMENTATION_LENGTH - 1 ) ) ) ) * frameBuffer[i]);
}
Dlaczego to robi? Nie mogę znaleźć żadnego powodu, aby to zrobić w kodzie, lub online.
Author: fredley, 2011-03-24

4 answers

Kiedy wykonujesz skończoną transformatę Fouriera, implicite stosujesz ją do nieskończenie powtarzającego się sygnału. Na przykład, jeśli początek i koniec twojej skończonej próbki nie pasują, to będzie to wyglądało jak nieciągłość w sygnale i pojawi się jako wiele bzdur o wysokiej częstotliwości w transformacie Fouriera, której tak naprawdę nie chcesz. A jeśli Twoja próbka jest piękną sinusoidą, ale liczba całkowita okresów nie pasuje dokładnie do skończonej próbki, twoja FT pokaże odczuwalną energię w różnego rodzaju miejscach, nigdzie w pobliżu rzeczywistej częstotliwości. Nie chcesz tego.

Okno danych zapewnia, że końcówki pasują do siebie, zachowując wszystko rozsądnie gładkie; to znacznie zmniejsza rodzaj "wycieku widmowego" opisanego w poprzednim akapicie.

 39
Author: Gareth McCaughan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-24 12:33:13

To stare pytanie, ale myślałem, że odpowiedź można poprawić.

Wyobraź sobie, że sygnał, który chcesz przekształcić Fouriera, to czysta sinusoida. W dziedzinie częstotliwości, można oczekiwać, że ma ostry skok tylko na częstotliwości sinusa. Jeśli jednak przyjmiesz transformatę Fouriera, twój ładny ostry skok zostanie zastąpiony czymś takim:

Funkcja Sinc

Dlaczego? Prawdziwe sinusoidy rozciągają się do nieskończoności w obu kierunkach. Komputery nie potrafią wykonywać obliczeń z nieskończona liczba punktów danych, więc wszystkie sygnały są "odcięte" na obu końcach. Powoduje to tętnienie po obu stronach szczytu, który widzisz. Okno Hamminga zmniejsza to tętnienie, dając dokładniejsze wyobrażenie oryginalnego widma częstotliwości sygnału.

Więcej teorii, dla zainteresowanych: kiedy odciąć sygnał na obu końcach, są implicite mnożenie sygnału przez kwadratowe okno. Transformata Fouriera kwadratowego okna jest obrazem powyżej, znanym jako funkcja sinc. Ilekroć wykonujesz transformatę Fouriera na komputerze, czy ci się to podoba czy nie, zawsze wybierasz jakieś okno. Kwadratowe okno jest domyślną wartością domyślną, ale niezbyt dobrym wyborem. Istnieje wiele okien, które ludzie wymyślili, w zależności od pewnych cech, które chcesz zoptymalizować. Okno hamming jest jednym ze standardowych.

 33
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-08 02:32:34

Z tego, co wiem o dźwięku i szybkich badaniach, wydaje się, że okno Hamminga jest tutaj, aby zminimalizować boczny płat sygnału (niepożądane promieniowanie). Poprawiając w ten sposób jakość lub harmonikę dźwięku. Rozumiem również, że tego typu Funkcja window {[2] } dobrze pasuje do DTFT.

Znajdziesz dobre wyjaśnienie techniczne na stronie badacz stanford lub wikipedia , a także w Artykule Harris jeśli jesteś gotowy do matematyki: D.

 11
Author: M'vy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-24 12:36:59

FT skończonego odcinka sinusoidy konwoluje transformatę Fouriera okna względem piku częstotliwości sinusoidy, ponieważ właściwością FFT jest to, że mnożenie wektorów w jednej domenie jest splotem w drugiej. FT prostokątnego okna (co oznacza Dowolna niezmodyfikowana skończona długość próbek w FFT) jest niechlujnie wyglądającą funkcją Sinc, która rozpryskuje dowolny sygnał, który nie jest dokładnie okresowy w oknie na całej częstotliwości spektrum.

FT okna w kształcie Młota koncentruje tę "rozprysk" znacznie bliżej piku częstotliwości po splotach (niż funkcja Sinc), co powoduje grubszy, ale gładszy pik częstotliwości, ale o wiele mniej rozprysków na częstotliwościach daleko od piku częstotliwości. Powoduje to nie tylko czystsze widmo, ale także mniejsze zakłócenia z odległych częstotliwości na każdym sygnale zainteresowania.

Ta interpretacja (w przeciwieństwie do " nieskończenie powtarzania" interpretacja) wyjaśnia, dlaczego inaczej ukształtowane okna niż Hamming mogą dać lepsze rezultaty przy jeszcze mniejszym "wycieku". W szczególności okno Hamming zmniejszy rozmiar pierwszego płata bocznego Sinc " wycieku "tuż obok szczytu częstotliwości w zamian za faktycznie więcej" wycieku " (lub Splatter Splatter) daleko od częstotliwości zainteresowania. Inne okna mogą być bardziej odpowiednie, jeśli chcesz innego kompromisu. The Harris paper (pdf here ) linked in another odpowiedź powyżej daje kilka przykładów tych różnych okien.

 8
Author: hotpaw2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-24 14:40:30