Încerc să fac fereastra Hanning manual, dar nu „nu funcționează, ce fac greșit?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Nu sunt sigur de ce nu pot obține fereastra completă de funcționare ..
Comentarii
Răspunde
Trebuie să schimbi ” 102 „până la” 10 „.
x=.5-.5*cos(2*pi*t/10);
Comentarii
- Mulțumesc :), deși a fost numărul de eșantioane
- @ Pulse9 Vrei ca fereastra să înceapă de la 0 și să se termine la 0, deci asta înseamnă că cosul trebuie să înceapă și să se termine la 1 – adică trebuie să parcurgă exact un ciclu.
Răspuns
A fost un meteorolog (și fereastra Hann- maker ) numit
Julius von Hann , Hanning este un abuz (similaritate cu Hamming). Ați avea un control mai bun al codului dvs. apelând funcțiile hann.m
sau 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)
Sper că implementarea sa manuală nu implică calcularea cosinusului cu seriile.
Comentarii
- De ce ar fi apelarea compilării în funcții să fie mai bine? Funcționează intern exact la fel ca metoda manuală și au mai multe straturi de verificare și analiză, ceea ce le face puțin mai lente. Funcțiile de construire utilizează în mod specific " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar Am scris " control mai bun al codului ", deoarece funcția implementată (o fereastră) este explicită din apel, chiar fara comentarii. Altcineva, sau programatorul trei luni mai târziu, va înțelege cu ușurință ce face și îl poate schimba, îmbunătăți imediat, fără a fi nevoie să ghicească. În plus, punerea lungimii (
nSample
) sau a numelui ferestrei ca variabile îmbunătățește lizibilitatea.
w=hann(100);
și funcționează bine, dar am nevoie să o fac manual