Jeg prøver å gjøre Hanning-vinduet manuelt, men gjorde ikke «t fungerer, hva gjør jeg galt?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Ikke sikker på hvorfor jeg ikke kan få tak i hele hanningsvinduet ..
Kommentarer
Svar
Du må endre » 102 «til» 10 «.
x=.5-.5*cos(2*pi*t/10);
Kommentarer
- Takk :), jeg skjønt det var antall prøver
- @ Pulse9 Du vil at vinduet skal starte ved 0 og slutte ved 0, så det betyr at cos må starte og slutte med 1- dvs. det må gå gjennom nøyaktig en syklus.
Svar
Det var en meteorolog (og Hann-vinduet- maker ) kalt
Julius von Hann , Hanning er et misbruk (likhet med Hamming). Du vil ha bedre kontroll over koden din ved å ringe hann.m
eller window.m
-funksjonene:
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)
Jeg håper at implementering av det manuelt ikke involverer databehandling av cosinus med serier.
Kommentarer
- Hvorfor kaller build i funksjoner være noe bedre? De fungerer internt nøyaktig det samme som den manuelle metoden og har flere lag med kontroll og parsing som gjør dem litt tregere. Innbyggingsfunksjonene bruker spesifikt " w = 0.5 – 0.5 * cos (2 * pi * x); "
- @Hilmar Jeg skrev " bedre kodekontroll ", fordi funksjonen som implementeres (et vindu) er eksplisitt fra samtalen, til og med uten kommentarer. Noen andre, eller programmereren tre måneder senere, vil lett forstå hva den gjør, og kan endre det, forbedre det med en gang, uten å måtte gjette. I tillegg forbedrer du lesbarheten ved å sette lengden (
nSample
) eller vindusnavnet som variabler.
w=hann(100);
og fungerer bra, men jeg trenger det, gjør det manuelt