Se stai ottimizzando i tempi di progettazione e ti trovi su una piattaforma che supporta bene FFT di grandi dimensioni (cioè non un punto fisso), segui i consigli di hotpaw2 e usa la convoluzione veloce . Funzionerà molto meglio di un'implementazione FIR ingenua e dovrebbe essere relativamente facile da implementare.
D'altra parte, se hai del tempo da dedicare a questo per ottenere la migliore implementazione o sei su una piattaforma a virgola fissa, dovresti usare una struttura multirate down-filter-up-sottrazione. Ma è un po 'più complicato fare tutto bene.
Ho accesso a implementazioni affidabili e altamente ottimizzate di strumenti di filtraggio multirate e convoluzione rapida. La convoluzione rapida richiede circa 3 volte più tempo per ottenere prestazioni del segnale equivalenti rispetto alla struttura multirate. Inoltre, questo è persino su una piattaforma a virgola mobile. Il divario si amplierebbe considerevolmente su un punto fisso dsp.
In termini generali:
Conversione verso il basso:
Usa 8 stadi di filtri a metà banda, decimali per 2 per trasformare il tuo segnale a 48kHz in un segnale a 187,5 Hz. Il primo stadio di questo downsampling può avere una banda di transizione molto ampia, che consente all'energia di alias purché non alias di nuovo nella gamma inferiore a 60 Hz. Man mano che le fasi progrediscono, il numero di tocchi deve aumentare, ma verranno applicati a frequenze di campionamento progressivamente inferiori, quindi il costo complessivo di ciascuna fase rimane ridotto.
filtraggio:
Esegui il filtraggio stretto intorno ai 60 Hz bw per mantenere l'energia che vorresti eventualmente sottrarre. Vi è un doppio vantaggio nel fare il filtro stretto a bassa frequenza:
- 1Hz di larghezza di banda di transizione è 256 volte maggiore in termini di frequenza digitale alla frequenza bassa rispetto alla frequenza originale. Quindi ogni tocco del filtro è 256 volte più potente.
- Il segnale stesso è a una velocità inferiore, quindi il filtro deve elaborare solo 1/256 dati.
Up-conversion:
In sostanza, questo è il contrario delle fasi di decimazione. Ciascuno degli 8 stadi dell'interpolatore raddoppia la velocità stimando il campione che passa tra campioni di input consecutivi. La banda di transizione si allarga all'aumentare della frequenza di campionamento.
Sottrarre:
Sottrai il segnale filtrato passa-basso a tariffa piena dal segnale originale. Se hai corretto correttamente tutti i ritardi di gruppo, la struttura complessiva sarà un filtro passa-alto con una larghezza di banda di transizione ridotta.