Por que uma janela mais estreita em uma transformação de Fourier ou STFT fornece baixa resolução de frequência?

7

Na teoria de FT (transformada de Fourier) e STFT (transformada de Fourier de curto período de tempo), diz-se que "uma janela ampla oferece melhor resolução de frequência, mas baixa resolução de tempo. Uma janela mais estreita fornece boa resolução de tempo, mas baixa resolução de frequência"

Alguém pode explicar por que uma janela mais estreita fornece uma resolução de frequência ruim?

Nrupatunga
fonte

Respostas:

4

As outras respostas são boas, mas achei que tentaria dar uma resposta mais intuitiva / visual, já que sou um cara intuitivo / visual.

A imagem abaixo é a plotagem de dois tons com quase a mesma frequência. Um tom é plotado em vermelho e o outro em azul.

Janela curta

Gerei a imagem no Matlab com o seguinte código:

tone1 = sin(2*pi*.05 * (0:99));
tone2 = sin(2*pi*.0501 * (0:99));
plot(tone1)
hold on
plot(tone2, 'r')

Como você pode ver na imagem e no código, os dois tons têm uma frequência muito próxima. Eles estão começando a se separar um pouco no final desta janela curta, mas ainda são muito parecidos, a ponto de um DFT não poder diferenciá-los.

Se eu criar os mesmos tons com as mesmas frequências, apenas para aumentar a janela (5000 amostras desta vez em vez de 100), obtemos uma imagem muito diferente. Obviamente, haverá mais ciclos em cada tom ...

Janela comprida

... mas essa não é a parte interessante. Vemos a parte interessante quando aumentamos o zoom no final da janela.

Zoom de janela longa

Vemos que os dois tons estão 180 graus fora de fase no final da janela, o que os torna muito fáceis de distinguir. Então, como eu soube escolher 5000 amostras? A diferença nos dois tons é.0002πrumadEuumanssumampeue, tão 5000 amostras .0002πrumadEuumanssumampeue=π radianos.

Como outra resposta mencionada, a resolução da DFT é a frequência da amostra dividida pelo número de amostras (ou seja, o comprimento da janela). Eu implicitamente criei a frequência de amostra 1; portanto, se dividirmos 1 por 5000 (o número de amostras), obtemos que a resolução é 0,0002 Hz. Na verdade, nossos tons diferem de 0,0001 Hz, o que significa que o tone2 terá energia no compartimento do tone1 e no compartimento ao lado (e um pouco em todos os outros também, mas essa é uma história diferente).

Jim Clay
fonte
3

Ao calcular a resolução de frequência, ou largura do compartimento, de uma DFT, a fórmula é a seguinte:

frequency_resolution = sample_rate/fft_size

Digamos que você tenha um sinal de áudio com taxa de amostragem de 8000 Hz, mas deseja uma resolução de alta frequência. Você tem apenas 8000 amostras por um segundo, mas deseja tirar uma FFT de 32K para obter uma resolução de frequência realmente alta. Quando você tira uma FFT de 32K de uma sequência de 8000 amostras, é necessário preencher a sequência com uma tonelada de zeros para preencher a FFT. Não há valor agregado ao fazer isso; portanto, enquanto você obtém uma alta resolução no domínio da frequência, não há suporte suficiente à amostra; portanto, são apenas dados interpolados. O gráfico do domínio da frequência é suave e interpolado.

Agora diga que você tem muitos dados, mas muitos dados levam tempo para preencher o registro da FFT. Digamos que sua taxa de amostragem seja 8000, mas você deseja uma resolução realmente alta e vai esperar por ela. Você espera 4 segundos para preencher essa 32K FFT. Agora, quando você usa essa FFT, não há preenchimento extra de zeros para preenchê-la. Então, quando você olha para o gráfico, esses compartimentos não são interpolados, mas são suportados por muitos dados, porque você o esperava.

Essa é a diferença. Quando você tem uma FFT longa com pouco suporte para amostras, obtém dados interpolados. Portanto, esse é o trade-off de frequência de tempo de que você fala. Se você deseja alta resolução, precisa de dados para suportá-lo.

Porten
fonte