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); 

tutaj wprowadź opis obrazu

Nie wiem, dlaczego nie mogę uzyskać pełnego okna obsługi.

Komentarze

  • Zrobiłem to w=hann(100); i działa dobrze, ale muszę to zrobić ręcznie

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ść.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *