Plot sian adalah spektrum 50 Hz, dan magenta adalah gelombang sinus 50,1 Hz (memiliki amplitudo 0,7). Keduanya dijadikan sampel pada 1024 sampel / s. Saya melakukan FFT 1024 poin untuk mendapatkan spektrum ini.
Mengapa spektrum 50Hz hanya nilai tunggal? Mengapa sinus 50.1 Hz terdiri dari frekuensi lain selain dari 50.1 Hz; dari mana frekuensi baru ini berasal?
Saya tidak melakukan pemrosesan non-linear pada sinyal 50,1 Hz! Juga 50,1 Hz tampaknya memiliki amplitudo maksimum yang lebih kecil, yaitu bukan 0,7, padahal sebenarnya gelombang sinus yang saya hasilkan memiliki amplitudo 0,7.
Kenapa ini?
Diperoleh oleh perintah MATALB fft ();
Jawaban:
Sebenarnya jawaban Matt sudah memberikan satu pandangan tentang masalah di sini: DFT secara periodik tersirat dalam domain waktu dan frekuensi (lihat pertanyaan ini ). Dari parameter Anda, kami dapat menghitung bahwa periode pengamatan Anda adalah 1 detik. Itu berarti Anda mengamati 50 periode nada 50 Hz. Memperpanjang interval pengamatan secara berkala akan selalu menghasilkan gelombang sinus yang tak terlihat. Jika Anda menggunakan nada 50.1 Hz, Anda mengubah periode osilasi 50.1. Memperpanjang sinyal itu secara berkala akan menghasilkan fase melompat yang menyebabkan anak sungai spektral tambahan.
Kedua efek yang dijelaskan di atas berkontribusi pada spektrum yang Anda amati.
sumber
Ini adalah efek memotong atau membunyikan sinyal sinus. Anda harus memotong sedemikian rupa sehingga jika Anda menambahkan sinyal bergeser ke yang terpotong, itu akan tetap menjadi gelombang sinus asli.
sumber
Anda hanya akan mendapatkan satu titik FFT hasil tunggal untuk frekuensi sinusoid murni yang tidak dimodifikasi yang persis bilangan bulat periodik dalam aperture atau lebar FFT. Frekuensi lain dari sinusoid akan tampak berbelit-belit dengan transformasi (Sinc berkala) dari jendela default (persegi panjang).
50.1 Hz tidak persis periodik di jendela 1 detik FFT Anda.
Bin hasil FFT "kebocoran" lainnya atau frekuensi diperlukan untuk mewakili diskontinuitas yang dihasilkan antara batas jendela dengan sinyal apa pun yang tidak persis bilangan bulat periodik dalam lebar FFT. Ini karena semua vektor basis DFT persis bilangan bulat periodik dalam lebar DFT, dan dengan demikian tidak memiliki diskontinuitas tajam antara akhir dan awal vektor basis. Jadi setiap sinyal yang tidak memiliki karakteristik tersebut tidak dapat diwakili oleh hanya satu vektor basis DFT (dan konjugat kompleksnya), sehingga informasi tentang sisa sinyal harus pergi ke suatu tempat.
Karena energi total disimpan oleh transformasi FFT (teorema Parseval'a), energi dalam tempat sampah "kebocoran" mengambil dari tempat sampah puncak. Dengan demikian besarnya bin puncak harus lebih rendah.
sumber
Saya yakin gelombang sinus Anda nol pada sampel pertama dan terakhir? Seharusnya tidak. Harus berbaris sehingga sampel berikutnya setelah sampel terakhir adalah nol, sehingga Anda dapat menyalin dan menempelkan salinan sinyal satu per satu dan mereka akan terlihat terus menerus, tanpa sampel duplikat. Mungkin menganggapnya seperti wallpaper desktop ubin, di mana satu sisi harus memenuhi tepi berlawanan saat ubin. :)
Lihat https://gist.github.com/endolith/236567 untuk contoh python:
Lihat bagaimana dua salinan sinyal cocok secara end-to-end untuk membuat gelombang kontinu:
Ketika ini terjadi, energi FFT terkandung seluruhnya dalam satu bin:
sumber
Ini terjadi karena Kebocoran Spektral dan Windowing. Respon ideal yaitu fungsi impuls adalah untuk gelombang sinus waktu kontinu. Ketika Anda mengambil DFT dari gelombang sinus diskrit di komputer digital, Anda pada dasarnya mengambil Fourier Transform dari jendela dan sampel sinus dan kemudian mengambil sampel dalam domain frekuensi. Ini menyebabkan kebocoran spektral. Rujuk: http://w.astro.berkeley.edu/~jrg/ngst/fft/leakage.html
sumber