Jag försöker göra Hanning-fönstret manuellt men gjorde inte ”t fungerar, vad gör jag fel?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Inte säker på varför jag inte kan få hela hanningsfönstret …
Kommentarer
Svar
Du måste ändra ” 102 ”till” 10 ”.
x=.5-.5*cos(2*pi*t/10);
Kommentarer
- Tack :), jag men det var antalet prover
- @ Pulse9 Du vill att fönstret ska börja vid 0 och sluta vid 0, så det betyder att cos måste börja och sluta med 1- dvs. det måste gå igenom exakt en cykel.
Svar
Det fanns en meteorolog (och Hann-fönster- maker ) heter
Julius von Hann , Hanning är ett missbruk (likhet med Hamming). Du skulle ha bättre kontroll över din kod genom att använda hann.m
eller window.m
-funktionerna:
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)
Jag hoppas att implementering av det manuellt inte innebär att beräkna cosinus med serier.
Kommentarer
- Varför skulle jag kalla build i funktioner vara bättre? De arbetar internt exakt på samma sätt som den manuella metoden och har fler lager av kontroll och tolkning vilket gör dem lite långsammare. Inbyggnadsfunktionerna använder specifikt " w = 0.5 – 0.5 * cos (2 * pi * x); "
- @Hilmar Jag skrev " bättre kodkontroll ", eftersom funktionen som implementeras (ett fönster) är uttrycklig från samtalet, även utan kommentarer. Någon annan, eller programmeraren tre månader senare, kommer lätt att förstå vad den gör och kan ändra det, förbättra det direkt utan att behöva gissa. Dessutom förbättras läsbarheten genom att sätta längden (
nSample
) eller fönstrets namn som variabler.
w=hann(100);
och fungerar bra, men jag behöver det gör det manuellt