INDIETRO
  Filtri digitali
AVANTI

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.  


INDIETRO
Laboratorio Sperimentale di Matematica Computazionale - parte III
Sergio Steffè - AA 2009/2010 - PISA
AVANTI