Qual a relação entre o comprimento da FFT e a resolução da frequência?


67

Se eu amostrar um sinal usando métodos de amostragem adequados (Nyquist, filtragem, etc.), como relaciono o comprimento da minha FFT à resolução de frequência resultante que posso obter?

Como se eu tivesse uma onda senoidal de 2.000 Hz e 1.999 Hz, como determinaria a duração da FFT necessária para determinar com precisão a diferença entre essas duas ondas?

Respostas:


81

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 bins1.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.


com tags de cabeçalho e alguma formatação deste post pode ir de boa a ótima. Você tocou em tudo que eu queria observar, e muito bem, mas a forma como a postagem é formatada, menos pessoas a leem, pois seu comprimento é proibitivo, se você der cabeçalhos a cada seção do que você está discutindo, as pessoas vão pular para a parte mais interessante que os ajusta e seu número de + 1s aumentará muito. Não de mim, é claro, como você já ganhou.
Kortuk

@kurtuk Eu cuspo este com pressa, vou limpar a formatação quando tiver algum tempo livre (ou fique à vontade para editá-lo, se desejar).
Mark

11
@kortuk, o nome começa com um 'o'. Presumi que sim, eu estava apenas compartilhando minha opinião, tanto para você, se você ainda não sabia, mas mais para a comunidade como um todo.
Kortuk

11
Observe que você não precisa calcular a FFT. Se você deseja conhecer apenas alguns compartimentos, é mais barato calcular a DFT desses compartimentos do que executar um FFT otimizado que calcula todos os compartimentos de uma só vez, compartilhando muitas das operações.
Chris Stratton

Também é importante notar que uma troca de domínio de frequência / tempo semelhante se aplica aos filtros analógicos e IIR.
Caleb Reister #

10

A resolução básica da FFT é , onde é a frequência de amostragem.fsNfs

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.


Eu sou o único que não vê o código Latex exibido corretamente formatado?
Stevenvh

@stevenvh Não funciona para mim também.
terrace

Funciona para mim. O látex é de apenas 2 lugares.
Kortuk

2
Corrigido (já há algum tempo). O complemento NoScript do Firefox bloqueou o mathjax.org.
stevenvh

3

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.


1

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.


0

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.


-3

olhe para esta foto. Está claro. relação entre fs e fft resolução

insira a descrição da imagem aqui


5
Não está totalmente claro nesta imagem o que está acontecendo. (Não ajuda que a foto não esteja em inglês.) O que isso acrescenta que as outras respostas não mencionaram?
Greg d'Eon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.