Saya seorang insinyur kimia, bukan EE, jadi ini agak sulit.
Saya mencoba mencari cara untuk mengambil data amplitudo vs waktu dan mengubahnya menjadi frekuensi vs waktu. Insting pertama saya adalah mengiris data saya menjadi potongan-potongan, melakukan FFT pada setiap potongan, dan kemudian memplotnya. Sayangnya, karena durasi waktu setiap irisan mendekati nol, tidak ada lagi informasi yang cukup untuk mendapatkan informasi frekuensi yang akurat (frekuensi rendah memerlukan lebih dari irisan waktu yang sangat kecil). Jadi ... bagaimana saya melakukan ini? Saya yakin ini adalah semacam masalah terkenal yang sudah dipecahkan seseorang.
Inilah jenis transformasi yang saya cari, diilustrasikan dengan gelombang suara (piano note G). Seperti yang Anda lihat, grafik ini sebagai tiga sumbu, dengan yang ketiga diwakili oleh warna.
Terima kasih!
Ya, banyak orang telah mengerjakan analisis frekuensi waktu.
Pendekatan "mengiris data saya menjadi potongan, melakukan FFT pada setiap potongan" adalah ide yang bagus. Menerapkan "fungsi jendela" pada setiap chunk, tepat sebelum melakukan FFT, membantu menghindari banyak artefak. Membiarkan potongan tumpang tindih juga membantu. Setelah perubahan itu , Anda berakhir dengan transformasi Gabor , yang tampaknya menjadi transformasi Fourier waktu singkat (STFT) yang paling populer.
Seperti yang telah Anda tunjukkan, dan seperti yang ditunjukkan artikel Wikipedia, semua teknik transformasi Fourier jangka pendek memiliki tradeoff:
Ini adalah masalah yang terkenal, tetapi sayangnya, tidak hanya tidak diselesaikan, sudah terbukti bahwa ketidakpastian antara keduanya tidak dapat dihindari - batas Gabor, batas Heisenberg-Gabor, prinsip ketidakpastian , dll.
Jika saya jadi Anda, saya akan mulai dengan salah satu dari banyak perpustakaan untuk menghitung transformasi Gabor, dan bereksperimen dengan memotong deret waktu menjadi berbagai panjang. Ada kesempatan baik cukup Anda akan beruntung dan Anda akan berakhir dengan beberapa panjang yang memberikan memadai lokalisasi waktu dan memadai diskriminasi frekuensi.
Jika itu tidak bekerja untuk aplikasi ini, maka saya akan pindah ke pendekatan lain untuk representasi waktu-frekuensi dan analisis waktu-frekuensi - transformasi wavelet, transformasi chirplet , pecahan Fourier transform (FRFT), dll
EDIT: Beberapa kode sumber untuk menghasilkan spektrogram / plot air terjun dari data audio:
Gambar untuk Spectrogram berjalan dalam arah terbalik dari utilitas di atas.
sumber