Saya menggunakan FFT untuk menganalisis apa yang pada dasarnya adalah amplop daya dari sinyal (lihat di sini untuk info tentang proyek yang mengandung), dan, karena angka daya selalu positif, untuk menghilangkan komponen DC saya ingin menggunakan jendela fungsi yang 50/50 positif dan negatif, vs fungsi semua-positif yang biasa.
Saya telah mengambil fungsi " flat top ", menghilangkan a0
bias dan mengubahnya dari cosinus ke sinus, tetapi saya tidak yakin itu optimal (atau bahkan bermakna).
Ada saran?
fft
window-functions
Daniel R Hicks
sumber
sumber
Jawaban:
Turunan pertama dari fungsi jendela kontinu yang paling umum (von Hann, dll.) Akan menolak DC, namun masih akan memiliki respons frekuensi magnitudo yang serupa dengan fungsi jendela asli; jadi Anda masih bisa menggunakan kriteria "kebaikan" asli Anda untuk pemilihan jendela, jika tidak terkait dengan fase.
sumber
Jika Anda khawatir melakukan analisis spektral pada sinyal dengan komponen DC besar, dan Anda ingin menekan puncak DC itu, maka fungsi jendela bukanlah yang Anda inginkan. Seperti beberapa jawaban lain yang dicatat, filter jalan pintas (atau, dilihat secara berbeda, filter takik dengan takik pada frekuensi nol) adalah solusi yang tepat.
Untuk memahami alasannya, Anda perlu memikirkan apa yang menerapkan fungsi jendela terhadap respons frekuensi setiap output DFT. DFT didefinisikan sebagai:
Salah satu interpretasi tentang bagaimana DFT bekerja adalah sebagai bank filter di frekuensi sama-spasi antara - f sN danfs- fs2 . Susun ulang jumlah di atas sebagai berikut:fs2
dimana:
Jadi, output DFT -th dihasilkan dengan terlebih dahulu mengambil sinyal input x [ n ] dan mengalikannya dengan eksponensial kompleks pada frekuensi - 2 π kk x [ n ] untuk menghasilkan sinyal yang dikonversi kurangxk[n]. Sinyal yang dihasilkan kemudian dijumlahkan melaluijendela sampel-Nuntuk menghasilkan output DFTX[k]. Ini secara efektif merupakan filter rata-rata bergerak (kadang-kadang disebut filter gerbong), yang respons impulsnya dapat digambarkan sebagai:- 2 πkN xk[ n ] N X[ k ]
Respons magnitudo dari filter gerbong dapat ditemukan dengan mengambil transformasi Fourier diskrit-waktu (DTFT) dari respons impuls tersebut:
Jadi, jika Anda benar-benar hanya ingin membatalkan komponen DC sinyal, menghapusnya melalui beberapa jenis pra-pemrosesan, bukan jendela waktu-domain, adalah cara yang harus dilakukan. Anda dapat menggunakan filter lintasan linier tinggi dengan frekuensi cutoff yang sangat rendah atau kurangi perkiraan rata-rata dari sinyal terlebih dahulu, misalnya. Memilih antara metode-metode ini harus didasarkan pada apa kendala lain yang dimiliki sistem Anda.
sumber
Saya tidak berpikir menggunakan fungsi jendela adalah cara yang baik untuk menghapus DC. Seperti yang disebutkan oleh endolith, metode yang umum adalah hanya mengurangi mean sebelum windowing. Pilihan lain adalah menerapkan filter high-pass ke sinyal Anda sebelum analisis, katakanlah, dengan frekuensi cutoff sekitar 10 Hz.
sumber