A resolução da frequência depende da relação entre o comprimento da FFT e a taxa de amostragem do sinal de entrada.
Se coletarmos 8192 amostras para a FFT, teremos:
8192 samples2=4096 FFT bins
Se nossa taxa de amostragem é de 10 kHz, o teorema de amostragem de Nyquist-Shannon diz que nosso sinal pode conter conteúdo de frequência de até 5 kHz. Em seguida, nossa resolução de compartimento de frequência é:
5 kHz4096 FFT bins≃1.22 Hzbin
Essa pode ser a maneira mais fácil de explicar conceitualmente, mas simplificada: a resolução da sua bandeja é apenas , onde é a taxa de amostragem do sinal de entrada e N é o número de pontos FFT usado (comprimento da amostra).fsampNfsamp
Podemos ver pelo exposto acima que, para obter caixas FFT menores, podemos executar uma FFT mais longa (ou seja, coletar mais amostras na mesma taxa antes de executar a FFT) ou diminuir nossa taxa de amostragem.
A pegada:
Sempre há uma troca entre resolução temporal e resolução de frequência.
No exemplo acima, precisamos coletar 8192 amostras antes de podermos executar a FFT, que quando a amostragem a 10 kHz leva 0,82 segundos.
Se tentássemos obter caixas de FFT menores executando uma FFT mais longa, levaria ainda mais tempo para coletar as amostras necessárias.
Isso pode ser bom, pode não ser. O ponto importante é que, a uma taxa de amostragem fixa, o aumento da resolução da frequência diminui a resolução temporal. Quanto mais precisa for sua medição no domínio da frequência, menos preciso você poderá ser no domínio do tempo. Você perde efetivamente todas as informações de tempo dentro do comprimento da FFT.
Neste exemplo, se um tom de 1999 Hz for iniciado e parar na primeira metade da FFT de amostra 8192 e um tom de 2002 Hz for reproduzido na segunda metade da janela, veremos os dois, mas eles pareceriam ter ocorrido ao mesmo tempo. Tempo.
Você também deve considerar o tempo de processamento. Um FFT de 8192 pontos requer um poder decente de processamento. Uma maneira de reduzir essa necessidade é reduzir a taxa de amostragem, que é a segunda maneira de aumentar a resolução de frequência.
No seu exemplo, se você reduzir sua taxa de amostragem para algo como 4096 Hz, precisará apenas de uma FFT de 4096 pontos para atingir posições de 1 Hz * 4096 Hz, precisará de uma FFT de 4096 pontos para atingir posições de 1 hz e ainda poderá resolver um problema. Sinal de 2khz. Isso reduz o tamanho do compartimento da FFT, mas também reduz a largura de banda do sinal.
Em última análise, com uma FFT sempre haverá uma troca entre resolução de frequência e resolução de tempo. Você precisa executar um ato de equilíbrio para alcançar todos os objetivos.
A resolução básica da FFT é , onde é a frequência de amostragem.fsN fs
A capacidade de diferenciar dois sinais muito próximos depende fortemente das amplitudes relativas e da função de janelas utilizada.
Você pode achar que brincar com o analisador de sinais Baudline é uma boa maneira de desenvolver alguma intuição sobre esse assunto - e não, executar algumas FFTs e plotar um espectro de cada vez no Matlab ou no Python / Numpy não é o mesmo.
EDIT: Há também um truque para preencher a entrada com zeros e obter uma FFT maior. Isso não melhorará sua capacidade de diferenciação, mas poderá tornar o espectro mais legível. É basicamente um truque semelhante ao antialiasing em gráficos vetoriais.
fonte
Vale a pena notar que uma FFT é uma alternativa para calcular vários pares separados de somas (k = 0..sample_length-1) da Amostra [k] * SineRefWave [j] [k] e Amostra [j] * CosRefWave [j ] [k], para todos os j até a metade do comprimento da amostra. Se alguém precisar de leituras de amplitude em todas essas frequências, uma FFT as calculará todas no tempo O (NlgN), enquanto que computá-las individualmente levaria tempo O (N ^ 2). Por outro lado, se alguém precisar apenas de leituras de amplitude em poucas frequências, será melhor apenas computá-las individualmente, especialmente se estiver usando um processador ou DSP que possa calcular com eficiência esse estilo de soma.
Também é importante notar que, embora uma FFT com uma janela de amostragem de 20ms não seja capaz de distinguir entre um único tom de 1975Hz ou uma combinação de frequências (1975-N) Hz e (1975 + N) Hz para N <25, pode ser usado para medir frequências isoladas com precisão mais fina que a janela de amostragem se não houver outro conteúdo espectral nas proximidades. Uma única frequência de 1975Hz será captada igualmente nos compartimentos de 1950Hz e 2000Hz, assim como uma combinação de tons de 1974Hz e 1976Hz. Um tom isolado de 1974Hz, no entanto, seria mais forte no compartimento de 1950Hz do que no de 2000Hz, e um tom de 1976Hz seria mais forte no compartimento de 2000Hz.
fonte
A resolução da frequência não depende da duração da FFT, mas da duração total do tempo de amostragem T, ou seja, 1 / T, que também é o componente de frequência mais baixa que você obteve.
Observe que o preenchimento zero não aumenta a resolução da frequência; A DFT do sinal de preenchimento zero é apenas uma melhor aproximação da DTFT do sinal original.
fonte
Se você conhece a faixa de possíveis frequências de entrada e a faixa é estreita, você pode aplicar uma subamostragem para reduzir o número de amostras e o tempo para calcular a FFT. Com 256 amostras e uma frequência de amostra de 256 Hz, você obtém a resolução desejada de 1 Hz e uma largura de banda sem alias de 128 Hz.
fonte
olhe para esta foto. Está claro. relação entre fs e fft resolução
fonte