Dapatkah saya mendapatkan bantuan tentang cara membuat sumbu frekuensi beralih dari frekuensi negatif ke frekuensi positif, (dalam Hertz), yang akan menjadi sumbu x dalam hasil FFT, tetapi diberikan FFT panjang genap, atau FFT panjang ganjil. Saya mengalami beberapa masalah saat membuatnya di MATLAB. (Asumsikan Anda tahu frekuensi sampling f_s).
frequency-spectrum
frequency
TheGrapeBeyond
sumber
sumber
Jawaban:
Salah satu pendekatan hanyalah menghitung vektor frekuensi untuk output DFT yang tidak tergeser (yaitu apa yang akan Anda dapatkan langsung dari
fft()
fungsi MATLAB , tanpa melakukanfftshift()
), lalu memetakan kembali frekuensi yang sesuai dengan lokasi di sisi negatif sumbu. Contoh:Jawaban yang diberikan oleh learnvst harus bekerja juga; ini hanyalah cara lain untuk berpikir tentang hal itu yang tidak memerlukan casing khusus untuk ukuran DFT genap / ganjil.
sumber
Anda dapat membuat spektrum frekuensi positif dengan cukup sederhana (di mana
fs
laju pengambilan sampel danNFFT
jumlah tempat sampah fft). Dalam implementasi Matlab dari algoritma FFT, elemen pertama selalu merupakan komponen DC, karenanya mengapa array dimulai dari nol. Ini berlaku untuk nilai NFFT yang ganjil dan genap.Jika Anda perlu membungkus spektrum frekuensi, Anda perlu mempertimbangkan apakah Anda memiliki NFFT bernomor ganjil. Selalu perlu ada komponen DC , jadi. .
Perhatikan bagaimana perhitungan sumbu frekuensi positif identik dengan di atas, tetapi perubahan istilah FFT berubah untuk mengakomodasi panjang FFT genap atau ganjil.
Cuplikan kode ini diambil dari jawaban panjang yang diposting di SO (yang mungkin Anda temukan menarik) ditemukan di sini: /programming/9694297/matlab-fft-xaxis-limits-messing-up-and-fftshift/ 9699983 # 9699983
sumber