Por que meu filtro de banda de parada atenua outras frequências?

12

Aqui está o meu código para um sinal de dois tons, em que uso uma banda de parada para remover o tom mais alto e, em seguida, plotamos o antes (em azul) e o depois (em vermelho) no domínio da frequência depois de convocar meu sinal com os coeficientes do filtro .

Se você inserir esse código no Matlab, poderá ver claramente que a frequência mais alta foi removida com êxito pelo filtro; no entanto, por algum motivo, a amplitude da frequência mais baixa foi cortada pela metade e quanto mais eu aumentar o número de coeficientes do filtro, quanto mais aplana toda a minha curva, por que isso ocorre? E como posso evitar que a banda de parada não se propague para o exterior? Aqui está a imagem e o código:

insira a descrição da imagem aqui

fSampling = 8000;
tSampling = 1 / fSampling;

t = 0: t Amostragem: 0,005;
F0 = 1000;
F1 = 3000;

xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t);
ht = fir1 (40, 0,25, 'parar');
yt = conv (xt, ht);

fAxis = -4000: 125: 4000-125;

xF = fft (xt, 64);
MagXF = deslocamento de ffts (abs (xF));

plot (fAxis, MagXF);
aguente

yF = fft (yt, 64);
MagYF = deslocamento de cinco vezes (abs (yF));

plot (fAxis, MagYF, 'r')
Zaubertrank
fonte
1
O filtro passa-banda / batente é inerentemente imperfeito e sempre afetará áreas do espectro que você gostaria de deixar em paz. É a natureza da besta.
Daniel R Hicks
1
Hmm ... existem maneiras de combater isso? Ou outro filtro relativamente simples que seria mais adequado? Não sei muito sobre filtros de entalhe, mas sei que eles são realmente filtros de parada de banda estreitos e que o Matlab tem comandos para eles.
Zaubertrank
2
Como eu disse, é inerente. Projetar um filtro é sempre uma troca em termos de otimização de alguns parâmetros à custa de outros (e à custa de despesa).
Daniel R Hicks

Respostas:

12

Os filtros sempre têm um "roll-off" inerente em sua resposta de frequência, porque você praticamente não consegue perceber uma banda passante que é uma função retangular perfeita. Para um filtro passa-baixo, o ponto em que a magnitude da sua resposta de frequência cai para -3dB é chamado de banda passante e tudo o mais é chamado de banda parada (tecnicamente, tudo além da frequência de canto, mas usaremos o freqüência de canto seja o nível -3dB). A rapidez com que a resposta de frequência atenua além da banda passante depende do comprimento do filtro.

Se você observar a resposta de frequência do seu filtro, htverá que ele cai para -6dB a 1000 Hz:

insira a descrição da imagem aqui

Portanto, faz sentido que a energia caia 6dB após a filtragem, o que você vê na figura como uma amplitude reduzida pela metade.

Se você tivesse examinado a documentação da fir1função que usou, também teria percebido isso (grifo meu):

B = fir1(N,Wn)projeta um Nfiltro digital FIR lowpass de quinta ordem e retorna os coeficientes do filtro no N+1vetor de comprimento B. A frequência de corte Wn deve estar entre 0 < Wn < 1.0, 1.0 correspondendo a metade da taxa de amostragem. O filtro Bé real e tem fase linear. O ganho normalizado do filtro em Wn é de -6 dB.

Agora, para criar filtros mais nítidos, com respostas muito próximas de um retângulo, você precisará usar os filtros IIR, que vêm com seus próprios problemas de estabilidade, etc., mas definitivamente uma opção. Você pode ver minha resposta aqui para algumas idéias sobre a implementação de um filtro IIR de seção 2 de segunda forma, de forma discreta, que fornece cantos muito afiados. O exemplo existe para um filtro passa-banda, mas você pode ler os documentos para as funções usadas lá e implementar você mesmo uma versão passa-baixo.

Lorem Ipsum
fonte
1

Leva um tempo para um filtro "decidir" se um sinal está dentro ou fora de uma transição de filtro. Uma solução é simplesmente afastar a transição do filtro de qualquer sinal de interesse, como no meio do caminho entre os dois sinais de teste, onde, no seu caso de teste, há muito pouco sinal para distorcer por uma decisão imperfeita.

hotpaw2
fonte
0

Usar

ht = fir1(40,.5,'stop');

em vez disso, você terá uma atenuação muito baixa em F0 e atenuação muito alta em F1.

insira a descrição da imagem aqui

Telaclavo
fonte