Sto cercando di capire la relazione tra un filtro FIR progettato dai "primi principi" usando un kernel filtro con convoluzione e un filtro progettato in due modi usando FFT (vedi sotto).
Per quanto ho capito, la risposta all'impulso di un filtro FIR è la stessa cosa del kernel di convoluzione del filtro. (Correggimi se sbaglio.)
Inoltre, a mio avviso, le frequenze dei componenti (ovvero la trasformata di Fourier) della risposta all'impulso di un filtro FIR sono la stessa cosa della risposta in frequenza del filtro. E, quindi, la trasformata inversa di Fourier mi restituirà la risposta all'impulso (di nuovo, correggimi se sbaglio).
Questo mi porta a due conclusioni (ignorando la risposta di fase o assumendo una risposta di fase lineare):
Dovrei essere in grado di progettare un filtro FIR di risposta in frequenza arbitraria "disegnando" la mia risposta in frequenza desiderata, prendendo un IFFT per ottenere la risposta all'impulso e usandolo come kernel di convoluzione.
In alternativa, dovrei essere in grado di creare un filtro prendendo l'FFT del segnale di ingresso, moltiplicando per la mia risposta di frequenza arbitraria desiderata nel dominio della frequenza e prendendo un IFFT del risultato per produrre il segnale di uscita.
Intuitivamente, sembra che 1 e 2 siano equivalenti, ma non sono sicuro di poterlo provare.
Sembra che le persone (e la letteratura DSP) facciano di tutto per progettare kernel FIR con risposte predefinite, usando algoritmi complicati (per me) come Chebyshev o Remez (sto lanciando alcuni nomi che ho letto, senza capirli davvero) .
- Perché andare a queste lunghezze, quando esiste una trasformazione FFT / IFFT per ogni possibile kernel FIR?
- Perché non semplicemente disegnare la risposta in frequenza esatta che desideri, prendere un IFFT e c'è il tuo kernel FIR (metodo 1 sopra)?