Snažím se dělat Hanningovo okno ručně, ale ne „Funguji, co dělám špatně?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Nejsem si jistý, proč nemůžu získat celé okno Hanningu.
Komentáře
Odpovědět
Musíte to změnit “ 102 „až“ 10 „.
x=.5-.5*cos(2*pi*t/10);
Komentáře
- Díky :), i když to bylo počet vzorků
- @ Pulse9 Chcete, aby okno začalo na 0 a skončilo na 0, to znamená, že cos musí začínat a končit na 1 – tj. musí projít přesně jedním cyklem.
Odpověď
Byl tam meteorolog (a Hann okno- výrobce ) s názvem
Julius von Hann , Hanning je zneužívání (podobnost s Hammingem). Měli byste lepší kontrolu nad svým kódem, který volá funkce hann.m
nebo 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)
Doufám, že jeho ruční implementace nezahrnuje výpočet kosinu se sériemi.
Komentáře
- Proč by volání buildu být ve funkcích lepší? Fungují interně přesně stejně jako manuální metoda a mají více vrstev kontroly a analýzy, což je o něco pomaleji. Integrované funkce konkrétně používají " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar Napsal jsem " lepší ovládání kódu ", protože implementovaná funkce (okno) je z volání explicitní, dokonce bez komentářů. Někdo jiný nebo programátor o tři měsíce později snadno pochopí, co dělá, a může to hned změnit, vylepšit, aniž by to musel hádat. Čitelnost zlepšuje také uvedení délky (
nSample
) nebo názvu okna jako proměnných.
w=hann(100);
a fungovat dobře, ale musím to udělat ručně