Ich habe versucht, das Hanning Window manuell auszuführen, habe es aber nicht getan „funktioniert nicht, was mache ich falsch?

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

Geben Sie hier die Bildbeschreibung ein

Ich bin mir nicht sicher, warum ich nicht das vollständige Hanning-Fenster erhalten kann.

Kommentare

  • Ich habe dies getan w=hann(100); und funktioniert gut, aber ich muss es manuell tun

Antwort

Sie müssen ändern “ 102 „bis“ 10 „.

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

Kommentare

  • Danke :), ich dachte es war Die Anzahl der Samples
  • @ Pulse9 Sie möchten, dass das Fenster bei 0 beginnt und bei 0 endet. Das bedeutet, dass der cos bei 1 beginnen und enden muss, dh er muss genau einen Zyklus durchlaufen.

Antwort

Es gab einen Meteorologen (und Hann window- Hersteller ) mit dem Namen

Julius von Hann , Hanning ist ein Missbrauch (Ähnlichkeit mit Hamming). Sie hätten eine bessere Kontrolle über Ihren Code, wenn Sie die Funktionen hann.m oder window.m aufrufen:

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) 

Ich hoffe, dass bei der manuellen Implementierung kein Cosinus mit Serien berechnet wird.

Kommentare

  • Warum sollte der Build aufgerufen werden? in Funktionen besser sein? Sie arbeiten intern genauso wie die manuelle Methode und verfügen über mehr Ebenen zum Überprüfen und Parsen, wodurch sie etwas langsamer werden. Die eingebauten Funktionen verwenden speziell " w = 0,5 – 0,5 * cos (2 * pi * x); "
  • @Hilmar Ich habe " bessere Codesteuerung " geschrieben, da die implementierte Funktion (ein Fenster) sogar aus dem Aufruf hervorgeht ohne Kommentare. Jemand anderes oder der Programmierer drei Monate später wird leicht verstehen, was es tut, und kann es ändern, sofort verbessern, ohne raten zu müssen. Wenn Sie außerdem die Länge (nSample) oder den Fensternamen als Variablen angeben, wird die Lesbarkeit verbessert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.