Czy mogę uzyskać pomoc dotyczącą tego, jak sprawić, by oś częstotliwości przechodziła od częstotliwości ujemnej do częstotliwości dodatniej (w hercach), która będzie osią x w wyniku FFT, ale biorąc pod uwagę FFT o parzystej długości lub FFT o nieparzystej długości. Mam problemy z zrobieniem go w MATLAB. (Załóżmy, że znasz częstotliwość próbkowania f_s).
frequency-spectrum
frequency
TheGrapeBeyond
źródło
źródło
Odpowiedzi:
Jednym z podejść jest po prostu obliczenie wektora częstotliwości dla nieprzesuniętego wyjścia DFT (tj. Tego, co można uzyskać bezpośrednio z
fft()
funkcji MATLAB , bez robieniafftshift()
), a następnie ponownie przypisać częstotliwości, które odpowiadają lokalizacjom po ujemnej stronie osi. Przykład:Odpowiedź udzielona przez learnvst powinna również działać; to tylko inny sposób myślenia o tym, który nie wymaga specjalnej obudowy dla parzystych / nieparzystych rozmiarów DFT.
źródło
Możesz stworzyć dodatnie spektrum częstotliwości po prostu (gdzie
fs
jest częstotliwość próbkowania iNFFT
liczba przedziałów FFT). W implementacji Matlaba algorytmu FFT pierwszym elementem jest zawsze składnik DC, dlatego tablica zaczyna się od zera. Dotyczy to nieparzystych i parzystych wartości NFFT.Jeśli chcesz zawinąć widmo częstotliwości, musisz wziąć pod uwagę, czy masz nieparzystą NFFT. Zawsze musi istnieć komponent DC , więc. .
Zauważ, że obliczenie dodatniej osi częstotliwości jest identyczne jak powyżej, ale przesunięty o FFT składnik zmienia się, aby dostosować parzyste lub nieparzyste długości FFT.
Te fragmenty kodu zostały zaczerpnięte z długiej odpowiedzi opublikowanej na stronie SO (która może być dla Ciebie interesująca) znalezionej tutaj: /programming/9694297/matlab-fft-xaxis-limits-messing-up-and-fftshift/ 9699983 # 9699983
źródło