Se você está otimizando o tempo de engenharia e está em uma plataforma que suporta FFTs grandes (isto é, não ponto fixo), siga os conselhos do hotpaw2 e use convolução rápida . Ele terá um desempenho muito melhor do que uma implementação ingênua de FIR e deve ser relativamente fácil de implementar.
Por outro lado, se você tiver algum tempo para gastar com isso para obter a melhor implementação ou se estiver em uma plataforma de ponto fixo, use uma estrutura multirate down-filter-up-subtract. Mas é um pouco mais complicado fazer tudo certo.
Eu tenho acesso a implementações confiáveis e altamente otimizadas de ferramentas de filtragem rápida e de convolução rápida. A convolução rápida leva cerca de 3x mais tempo para obter um desempenho equivalente do sinal em comparação com a estrutura de múltiplas taxas. Além disso, isso é até em uma plataforma de ponto flutuante. A diferença aumentaria consideravelmente em um ponto fixo dsp.
Em termos gerais:
Conversão descendente:
Use 8 estágios de filtros de meia banda, dizimados por 2 para transformar seu sinal de 48kHz em um sinal de 187,5 Hz. O primeiro estágio dessa redução de escala pode ter uma banda de transição muito ampla, permitindo que a energia atinja o mesmo nome, desde que não atinja novamente o intervalo abaixo dos 60 Hz. À medida que as etapas progridem, o número de torneiras precisa aumentar, mas elas serão aplicadas a taxas de amostragem progressivamente mais baixas, de modo que o custo geral de cada etapa permanece pequeno.
Filtragem:
Execute sua filtragem rigorosa em torno de 60 Hz bw para manter a energia que você deseja subtrair. Há uma vantagem dupla em fazer sua filtragem rigorosa na taxa baixa:
- 1Hz de largura de banda de transição é 256 vezes maior em termos de frequência digital na taxa baixa versus a taxa original. Portanto, cada toque no seu filtro é 256 vezes mais poderoso.
- O sinal em si está em uma taxa mais baixa, portanto o filtro precisa processar apenas 1/256 dos dados.
Conversão ascendente:
Essencialmente, este é o inverso dos estágios de dizimação. Cada um dos oito estágios do interpolador dobra a taxa estimando a amostra que fica entre amostras de entrada consecutivas. A banda de transição aumenta à medida que a taxa de amostragem aumenta.
Subtrair:
Subtraia o sinal filtrado passa-baixa de taxa total do sinal original. Se você ajustou corretamente todos os atrasos de grupo, a estrutura geral será um filtro passa-alto com uma largura de banda de transição estreita.