![]() |
|
Un filtro FIR
Per sperimentare l'effetto dei filtri FIR sui suoni, abbiamo scritto questo
semplice programma fir.f90 ( e il suo
analogo in C fir.c)
Per utlizzarlo occorre prima di tutto creare un file
dati.fir in cui vanno inseriti i valori della
successione h che caratterizza il filtro FIR.
Il programma legge da tale file il numero nfir di elementi non nulli di h
e poi i loro valori (=firfiltro), e calcola la convoluzione di x con h.
Per non dover rileggere ogni volta i valori dei suoni da filtrare, questi sono
salvati in due buffer organizzati come FIFO (=first in first out), uno per il canale
destro e uno per il canale sinistro.
L'esempio fornito è un filtro che cancella la banda di frequenze tra
7018 e 17546Hz.
Un altro esempio filtro-300-3000 passa la banda da 300 a 3000Hz.
Il modo più semplice e rudimentale per calcolare i coefficienti di un filtro
FIR è quello di fare ricorso alla DFT: si decide a priori la
lunghezza del filtro, si assegnano per le frequenze tra 0 e la frequenza di Nyquist
i valori di risposta desiderati H, e si calcola la DFT di H ottenendo i valori della
successione h.
Comunque i programmi standard per il calcolo lineare, come matlab o scilab o octave, oltre naturalmente a mathematica, offrono tutti delle routines per il calcolo in modo più o meno raffinato dei filtri FIR o anche IIR.
![]() |
|