Yritän tehdä Hanning-ikkunaa manuaalisesti, mutta ei ”Älä toimi, mitä teen väärin?
t=[0:.1:10]; x=.5-.5*cos(2*pi*t/102); plot(x);
Etkö ole varma, miksi en voi hankkia koko hanning-ikkunaa ..
Kommentit
vastaus
Sinun täytyy muuttaa ” 102 ”-” 10 ”.
x=.5-.5*cos(2*pi*t/10);
Kommentit
- Kiitos :), vaikka olisin näytteiden lukumäärä
- @ Pulse9 Haluat, että ikkuna alkaa 0: sta ja päättyy 0: een, joten se tarkoittaa, että cos: n on aloitettava ja lopetettava yhdellä – eli sen täytyy käydä läpi täsmälleen yksi jakso. li>
Vastaus
Oli meteorologi (ja Hann-ikkuna- valmistaja ) nimeltä
Julius von Hann , Hanning on väärinkäyttö (samankaltaisuus Hammingin kanssa). Voit hallita koodiasi paremmin kutsumalla hann.m
– tai window.m
-funktiot:
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)
Toivon, että sen manuaalinen käyttöönotto ei edellytä kosinin laskemista sarjoilla.
Kommentit
- Miksi koontiversiota kutsutaan toiminnoissa olla parempi? Ne toimivat sisäisesti täsmälleen samalla tavalla kuin manuaalinen menetelmä, ja niillä on enemmän tarkistuksen ja jäsentämisen kerroksia, mikä tekee niistä hieman hitaampia. Sisäänrakennustoiminnot käyttävät nimenomaisesti " w = 0,5 – 0,5 * cos (2 * pi * x); "
- @Hilmar Kirjoitin " paremman koodinhallinnan ", koska toteutettava toiminto (ikkuna) on nimenomainen puhelusta, jopa ilman kommentteja. Joku muu tai ohjelmoija kolme kuukautta myöhemmin ymmärtää helposti, mitä se tekee, ja voi muuttaa sitä, parantaa sitä heti ilman arvauksia. Lisäksi pituuden (
nSample
) tai ikkunan nimen asettaminen muuttujiksi parantaa luettavuutta.
w=hann(100);
ja toimivat hyvin, mutta tarvitsen sen tekemään se manuaalisesti