Próbowałem ręcznie wykonać okno Hanning, ale to się nie udało „nie działa, co robię źle?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Nie wiem, dlaczego nie mogę uzyskać pełnego okna obsługi.
Komentarze
Odpowiedź
Musisz zmienić ” 102 „do” 10 „.
x=.5-.5*cos(2*pi*t/10);
Komentarze
- Dzięki :), myślałem, że to liczba próbek
- @ Pulse9 Chcesz, aby okno zaczynało się od 0 i kończyło na 0, co oznacza, że cos musi zaczynać się i kończyć na 1, czyli musi przejść dokładnie jeden cykl.
Odpowiedź
Był meteorolog (i Hann window- maker ) o nazwie
Julius von Hann , Hanning jest nadużyciem (podobieństwo do Hamminga). Będziesz mieć lepszą kontrolę nad kodem wywołującym funkcje hann.m
lub window.m
:
nSample = 101; t = linspace(0,10,nSample); % w = hann(nSample); w = window(@hann,nSample); % w = .5-.5*cos(2*pi*t/10); plot(t,w)
Mam nadzieję, że ręczne wdrożenie nie będzie wymagało obliczania cosinusa z szeregami.
Komentarze
- Po co wywoływać kompilację w funkcjach będzie lepiej? Działają wewnętrznie dokładnie tak samo jak metoda ręczna i mają więcej warstw sprawdzania i analizowania, co sprawia, że są nieco wolniejsze. Wbudowane funkcje używają w szczególności " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar Napisałem " lepszą kontrolę kodu ", ponieważ implementowana funkcja (okno) jest jawna z wywołania, nawet bez komentarza. Ktoś inny lub programista trzy miesiące później z łatwością zrozumie, co robi, i może to zmienić, ulepszyć od razu, bez zgadywania. Dodatkowo umieszczenie długości (
nSample
) lub nazwy okna jako zmiennych poprawia czytelność.
w=hann(100);
i działa dobrze, ale muszę to zrobić ręcznie