Eu tenho um algoritmo que zere uma sequência para 4N, faça uma FFT e use apenas a menor frequência N pontos fora do 4N gerado.
Parece muito trabalho desperdiçado, alguma idéia de como isso pode ser feito mais rapidamente?
Eu tenho um algoritmo que zere uma sequência para 4N, faça uma FFT e use apenas a menor frequência N pontos fora do 4N gerado.
Parece muito trabalho desperdiçado, alguma idéia de como isso pode ser feito mais rapidamente?
Respostas:
Se você tiver apenas alguns compartimentos, o seguinte poderá ser muito eficiente para você:
1. Simplesmente faça o DFT em cada frequência necessária.
2. Use o algoritmo Goertzel para cada frequência em questão.
O preenchimento zero até o comprimento 4X, computando a FFT mais longa e, em seguida, usando apenas os compartimentos 1/4 inferiores produz resultados quase idênticos à interpolação Sinc com janela da FFT de comprimento original.
Portanto, basta usar o comprimento FFT original e interpolar usando um núcleo de interpolação Sinc trifásico com uma largura de janela adequada.
O preenchimento zero no domínio do tempo fornece uma solução de frequência mais alta, mas nenhuma informação nova; portanto, fornece essencialmente interpolação no domínio da frequência. Dependendo da natureza dos seus sinais e da precisão necessária, você poderá obter os pontos de frequência adicionais com uma FFT regular de N pontos e fazer uma interpolação adequada (linear, spline, pchip, sinc etc.).