La funzione remez implementa l'algoritmo di scambio di Remez per la progettazione di filtri FIR.
Per una trattazione dell'algoritmo e alcuni esempi, vedere Theory and Application of Digital Signal Processing di Rabiner e Gold (Prentice-Hall, Inc.) e Digital Filter Design di Parks e Burrus (Wiley-Interscience).
Filtro passa basso
1. Definire una risposta 1 nella banda passante e 0 nella banda di reiezione, quindi eseguire l'interpolazione di una transizione in linea retta tra i limiti della banda passante e della banda di reiezione.
In generale il numero di punti nella griglia di frequenze deve essere nell'ordine da 8 a 10 volte la lunghezza del filtro, con frequenze che iniziano a 0 e aumentano uniformemente fino a esattamente 0,05. La definizione della risposta richiede la definizione dei limiti delle bande e dei pesi assegnati agli errori in ogni banda. L'algoritmo minimizza l'errore con peso massimo nella gamma di frequenza [0, 0.5].
2. Definire i limiti della banda passante e della banda di reiezione:
3. Definire i pesi di banda passante, banda di reiezione e banda di transizione:
4. Definire una funzione che restituisca la risposta desiderata come funzione di frequenza. La valutazione in ogni punto della griglia consente di creare il vettore di risposta.
5. Definire il vettore di peso, che assegna a ogni punto della griglia il peso per la banda corrispondente.
6. Utilizzare le funzioni remez e length per calcolare i coefficienti di filtro:
7. Utilizzare la funzione gain per calcolare per questo filtro di lunghezza dispari, gli errori massimi della banda passante e della banda di reiezione, determinati dalla resa a 0 e a 0,5:
8. Tracciare il grafico della funzione e della relativa risposta in frequenza da 0 a 0.5.
Sono visibili le dieci frequenze estreme, incluso il punto in cui la linea (1 - δ1) incrocia il limite della banda passante pb e quello in cui la linea δ2 incrocia il limite della banda di reiezione sb. L'errore si alterna in modo uniforme nelle frequenze estreme in ogni banda. Per visualizzare un esempio in cui i due errori d sono diversi, modificare il peso della banda di reiezione impostandolo su 0,5 nella specifica del filtro precedente.
Filtro passa banda
1. Definire una funzione di risposta, costruita aggiungendo funzioni per la risposta in ogni banda di transizione e nella banda passante.
2. Applicare la funzione filtro all'intera griglia contemporaneamente utilizzando l'operatore di vettorizzazione. I pesi sono uniformi.
3. Generare un filtro con 45 coefficienti:
4. Tracciare il grafico della risposta in frequenza del filtro: