Saya sedang memikirkan subjek windowing DFT dan sebuah pikiran muncul di benak saya. DFT akan menghasilkan spektrum sinyal yang berbelit-belit dengan spektrum jendela yang digunakan, oleh karena itu memiliki lobus utama dan lobus samping.
Saya pikir mungkin untuk menghapus efek jendela pada spektrum sinyal dengan berbelit-belit baik sinyal dan besarnya spektrum jendela, dan itu memang berfungsi seperti yang Anda lihat pada gambar berikut.
Kiri adalah spektrum asli yang dihasilkan dengan jendela hanning. Kanan adalah spektrum berbelit-belit oleh DFT dari jendela hanning. Atas adalah Spectrum itu sendiri, bawah adalah findpeaks
hasil MATLAB .
Saya tidak pernah membaca apa pun mengenai teknik ini, tetapi saya cukup yakin saya belum menemukan apa pun di sana. Jadi saya bertanya-tanya apakah ada manfaat dari melakukan pemrosesan ini pada spektrum atau jika ada kerugian untuk itu yang tidak saya lihat.
Dari apa yang saya lihat, ini dapat membantu deteksi puncak seperti yang dapat kita lihat pada gambar sebelumnya. Selain itu, sepertinya spektrumnya sedikit terdistorsi seperti yang dapat kita lihat pada 2 gambar berikut. :
Di mana grafik biru adalah spektrum dan grafik merah adalah spektrum pasca-berbelit-belit.
- Adakah yang memikirkan hal ini?
- Apakah ada masalah yang dapat timbul dari konvolusi pasca-FFT ini?
- Adakah kertas yang memperlakukan subjek?
EDIT
Anda dapat menemukan skrip di sini yang akan menghasilkan grafik berikut:
sumber
Jawaban:
Faktanya, ada kerugian dari saran Anda: sinyal yang Anda perlihatkan semuanya sangat jelas dibagi menjadi komponen frekuensinya, tetapi secara umum, sinyal kehidupan nyata cenderung lebih berisik.
Bergantung pada aplikasinya, Anda ingin mengurangi kebocoran (lobus utama yang lebih tinggi / lobus samping yang lebih kecil dari frekuensi sinyal dalam spektrum yang diubah) atau, sebagai contoh lain, lobus utama tersempit yang mungkin.
Dalam plot Anda, terlihat bahwa menghaluskan spektrum magnitudo dengan jendela melakukan kebalikannya: lobus utama menjadi lebih lebar dan lebih kecil, sementara produk-produk kebocoran mengubah transformasi penguatan sinyal waktu hingga dalam kekuasaan. Diterapkan pada sinyal bising, ini akan menghasilkan kerugian yang signifikan.
Saran Anda, bagaimanapun, masih cukup berguna untuk identifikasi puncak!
sumber
tetap setia pada subjek "menghapus efek jendela dalam domain freq melalui konvolusi" (meskipun OP mungkin ingin mencapai sesuatu yang lain atau yang serupa), saya merasa menambahkan komentar saya memiliki pengalaman pribadi dengan topik khusus ini.
Seringkali saya memiliki keharusan untuk menghapus jendela Hann dalam domain frekuensi, bekerja dalam kerangka kerja STFT yang menggunakan bingkai jendela Hann sebagai default, untuk melakukan pemrosesan spektral tingkat lanjut di mana spektrum input diharapkan sebagai jendela NON sebagai gantinya (misalnya konvolusi overlap-save atau penyaringan).
Dengan kata lain: ya, Anda bisa. Meskipun secara matematis menghapus jendela (baik dalam waktu atau domain frekuensi) menyiratkan merekonstruksi data yang hilang selamanya, dalam praktiknya Anda bisa dengan kemungkinan kerugian minimal.
Mari kita ambil jendela Hann (naik cosinus). Rumus domain waktunya adalah y = (1-cos (pi * x)) / 2 dengan x mulai dari nol hingga dan mengecualikan satu melalui frame. Representasi domain frekuensi yang sesuai adalah bin0 = (0,5,0i), bin1 = (- 0,5,0i). Untuk menghapus efeknya dalam domain waktu, Anda mungkin ingin membagi sinyal dengan fungsi jendela yang disebutkan di atas. Untuk melakukan hal yang sama dalam domain frekuensi, Anda dapat dengan mudah menggabungkan spektrum agar tidak berjendela dengan spektrum kebalikan dari fungsi tersebut. Karena fungsi ini nol di kedua ujungnya (sebenarnya secara matematis nol hanya pada titik pertama, kecuali kesalahan pembulatan), untuk menghindari infinity, Anda dapat bertukar infinity dengan nilai besar seperti 10.000 atau lebih. Hasil dari konvolusi tersebut adalah spektrum yang tidak berjendela. Dengan mengonversinya ke domain waktu,
Mungkin Anda tidak dapat menghapus jendela persegi panjang, karena jumlah data yang hilang dengan mengalikan area besar sinyal dengan nol tidak mungkin diperoleh secara teori. Tapi saya pikir ini tergantung pada konten spektrum. Misalnya, jika itu adalah spektrum sinusoid polos, dengan menghapus pola jendela persegi panjang dengan berbelit-belit dengan spektrum fungsi yang bernilai tinggi di mana persegi panjangnya nol, dan satu di mana itu adalah satu (yaitu kebalikannya), Anda mungkin masih dapat memperoleh (secara substansial) spektrum sinusoid untuk merekonstruksi seluruh sinyal.
sumber
itu adalah pertanyaan yang bagus dan wawasan yang bagus yang saya yakin orang lain miliki. yang de -convolution dalam domain frekuensi adalah seperti mengalikan dalam domain waktu dan jika Anda deconvolving efek jendela Hann dalam domain frekuensi, itu seperti membagi dengan efek jendela Hann dalam domain waktu. di bagian ekor tempat jendela Hann menjadi nol, ada jumlah yang terlalu kecil untuk dikhawatirkan.
biasanya efek jendela ditinggalkan karena jika Anda mengubah kembali Anda mungkin ingin efek jendela dalam domain waktu. atau jika Anda tidak pernah mengubah kembali (ini adalah analisis atau pemodelan alg dan bukan modifikasi alg) maka Anda hanya tertarik pada parameter yang merupakan properti dari puncak tersebut, dan Anda hanya berurusan dengan efek yang diketahui dari penggabungan dengan yang diketahui kernel dan yang mungkin memodifikasi parameter yang diekstraksi secara deterministik. maka Anda hanya mengkompensasinya dalam parameter yang diekstrak.
terakhir, tergantung pada apa yang Anda lakukan, Anda mungkin ingin mempertimbangkan untuk menggunakan jendela guassian untuk analisis. memiliki masalah sidelobe yang sangat sedikit dan dalam kondisi linier (seperti filter), setiap sinusoid berjendela mempertahankan bentuk berjendela ketika diubah kembali ke domain waktu. jendela itu dapat dibatalkan dan jendela Hann diterapkan setelah mengubah kembali ke domain waktu.
sumber
Teknik yang Anda gunakan untuk merapikan spektrum sering digunakan ketika menganalisis spektrum itu sendiri dan Anda tidak peduli tentang efek dalam domain waktu (misalnya melakukan deteksi sinyal berbasis frekuensi atau pengukuran bandwidth). Bahkan tidak ada persyaratan bahwa jendela yang digunakan untuk perataan sama dengan jendela yang digunakan dalam domain waktu. Salah satu alasan utama untuk menggunakan jendela waktu-domain sebelum DFT adalah untuk meminimalkan diskontinuitas dalam wrap-around yang DFT mengasumsikan di ujung sinyal (DFT secara inheren melingkar). Tujuan perataan dalam domain frekuensi adalah untuk memfasilitasi analisis seperti deteksi puncak atau pengukuran bandwidth. Jendela "terbaik" untuk satu mungkin bukan jendela "terbaik" untuk yang lain. Bahkan, saya belum pernah melihat DFT dari jendela yang digunakan untuk smoothing spektral.
sumber