A Hanning ablakot kézzel próbálom megtenni, de nem sikerült “nem működik, mit csinálok rosszul?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Nem tudom, miért nem tudom megszerezni a teljes keresési ablakot.
Megjegyzések
Válasz
Változtatnia kell ” 102 “-” 10 “.
x=.5-.5*cos(2*pi*t/10);
Megjegyzések
- Köszönöm :), bár volt a minták száma
- @ Pulse9 Azt akarja, hogy az ablak 0-tól kezdődjön és 0-nál fejeződjön be, vagyis ez azt jelenti, hogy a cos-nak 1-nél kell kezdődnie és véget érnie, vagyis pontosan egy ciklust kell átélnie.
Válasz
Volt meteorológus (és Hann ablak- készítő ) nevű
Julius von Hann , Hanning visszaélés (hasonlóság Hamminghez). Jobban ellenőrizheti a kódját, ha meghívja a hann.m
vagy a window.m
függvényeket:
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)
Remélem, hogy a manuális megvalósítás nem vonja maga után a koszinusz sorozatokkal történő kiszámítását.
Megjegyzések
- Miért hívnánk meg az építést a funkciókban lehet jobb? Belsőleg pontosan ugyanúgy működnek, mint a manuális módszer, és több rétegük van az ellenőrzésre és az elemzésre, ami kissé lassabbá teszi őket. A beépítő függvények kifejezetten a következőt használják: " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar " jobb kódvezérlést írtam ", mert a megvalósítandó funkció (egy ablak) kifejezett a hívásból, még hozzászólások nélkül. Valaki, vagy a programozó három hónappal később, könnyen meg fogja érteni, mit csinál, és azonnal meg tudja változtatni, javíthatja, anélkül, hogy kitalálnia kellene. Ezenkívül a hosszúság (
nSample
) vagy ablaknév változókként való elhelyezése javítja az olvashatóságot.
w=hann(100);
és jól működik, de szükségem van rá manuálisan.