Jeg prøver at udføre Hanning Window manuelt men gjorde ikke “t fungerer, hvad laver jeg forkert?

t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x); 

indtast billedebeskrivelse her

Ikke sikker på, hvorfor jeg ikke kan få det fulde hanningsvindue ..

Kommentarer

  • Jeg gjorde dette w=hann(100); og fungerer fint, men jeg har brug for det gør det manuelt

Svar

Du skal ændre ” 102 “til” 10 “.

x=.5-.5*cos(2*pi*t/10); 

Kommentarer

  • Tak :), jeg selvom det var antallet af prøver
  • @ Pulse9 Du vil have, at vinduet starter ved 0 og slutter ved 0, så det betyder, at cos skal starte og slutte ved 1-, dvs. det skal gennemgå nøjagtigt en cyklus.

Svar

Der var en meteorolog (og Hann vindue- maker ) med navnet

Julius von Hann , Hanning er et misbrug (lighed med Hamming). Du ville have en bedre kontrol over din kode, der kalder hann.m eller window.m -funktionerne:

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åber, at implementering af det manuelt ikke involverer beregning af cosinus med serier.

Kommentarer

  • Hvorfor kalder build i funktioner være bedre? De arbejder internt nøjagtigt det samme som den manuelle metode og har flere lag af kontrol og parsing, hvilket gør dem lidt langsommere. Indbyggingsfunktionerne bruger specifikt " w = 0.5 – 0.5 * cos (2 * pi * x); "
  • @Hilmar Jeg skrev " bedre kodekontrol ", fordi den funktion, der implementeres (et vindue), er eksplicit fra opkaldet, endda uden kommentarer. En anden, eller programmøren tre måneder senere, forstår let, hvad den gør, og kan ændre det, forbedre det med det samme uden at skulle gætte. Derudover forbedrer læsbarheden ved at placere længden (nSample) eller vinduesnavnet som variabler.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *