Posso obter ajuda sobre como fazer com que o eixo da frequência passe da frequência negativa para a frequência positiva (em Hertz), que será o eixo x em um resultado da FFT, mas com uma FFT de comprimento uniforme ou FFT de comprimento ímpar. Estou tendo alguns problemas para fazer isso no MATLAB. (Suponha que você conheça a frequência de amostragem f_s).
frequency-spectrum
frequency
TheGrapeBeyond
fonte
fonte
Respostas:
Uma abordagem é simplesmente calcular o vetor de frequência para a saída DFT não deslocada (ou seja, o que você obteria diretamente da
fft()
função do MATLAB , sem fazer umfftshift()
), depois remapear as frequências que correspondem aos locais no lado negativo do eixo. Exemplo:A resposta fornecida pelo learnvst deve funcionar também; essa é apenas outra maneira de pensar sobre isso, que não requer nenhum revestimento especial para tamanhos DFT pares / ímpares.
fonte
Você pode criar um espectro de frequência positivo de maneira bastante simples (onde
fs
está a taxa de amostragem eNFFT
o número de caixas de fft). Na implementação Matlab do algoritmo FFT, o primeiro elemento é sempre o componente DC, portanto, o motivo pelo qual a matriz começa do zero. Isso é verdadeiro para valores ímpares e pares de NFFT.Se você precisar envolver o espectro de frequências, precisará levar em consideração se possui um NFFT de número ímpar. Sempre precisa haver um componente DC , então. .
Observe como o cálculo do eixo de frequência positivo é idêntico ao acima, mas o termo deslocado da FFT muda para acomodar comprimentos pares ou ímpares da FFT.
Esses trechos de código foram extraídos de uma resposta longa publicada no SO (que você pode achar interessante) encontrada aqui: /programming/9694297/matlab-fft-xaxis-limits-messing-up-and-fftshift/ 9699983 # 9699983
fonte