Beberapa waktu yang lalu saya mencoba berbagai cara untuk menggambar bentuk gelombang digital , dan salah satu hal yang saya coba adalah, alih-alih siluet standar amplop amplop, untuk menampilkannya lebih seperti osiloskop. Seperti inilah bentuk gelombang sinus dan persegi pada lingkup:
Cara naif untuk melakukan ini adalah:
- Bagilah file audio menjadi satu chunk per pixel horizontal pada gambar output
- Hitung histogram amplitudo sampel untuk setiap potongan
- Plot histogram dengan kecerahan sebagai kolom piksel
Ini menghasilkan sesuatu seperti ini:
Ini berfungsi dengan baik jika ada banyak sampel per potong dan frekuensi sinyal tidak terkait dengan frekuensi pengambilan sampel, tetapi tidak sebaliknya. Jika frekuensi sinyal adalah submultiple yang tepat dari frekuensi sampling, misalnya, sampel akan selalu muncul pada amplitudo yang sama persis di setiap siklus dan histogram hanya akan menjadi beberapa poin, meskipun sinyal yang direkonstruksi sebenarnya ada di antara titik-titik ini. Nadi sinus ini harus sehalus kiri di atas, tetapi itu bukan karena tepat 1 kHz dan sampel selalu terjadi di sekitar titik yang sama:
Saya mencoba upampling untuk meningkatkan jumlah poin, tetapi itu tidak menyelesaikan masalah, hanya membantu kelancaran dalam beberapa kasus.
Jadi apa yang saya benar-benar suka adalah cara untuk menghitung PDF sebenarnya (probabilitas vs amplitudo) dari sinyal yang direkonstruksi secara terus menerus dari sampel digitalnya (amplitudo vs waktu). Saya tidak tahu algoritma apa yang digunakan untuk ini. Secara umum, PDF suatu fungsi adalah turunan dari fungsi kebalikannya .
PDF dosa (x):
Tapi saya tidak tahu bagaimana cara menghitung ini untuk gelombang di mana kebalikannya adalah fungsi multi-nilai , atau bagaimana melakukannya dengan cepat. Hancurkan menjadi cabang dan hitung kebalikannya, ambil turunannya, dan jumlahkan semuanya? Tapi itu cukup rumit dan mungkin ada cara yang lebih sederhana.
"PDF data yang diinterpolasi" ini juga berlaku untuk upaya yang saya lakukan untuk melakukan estimasi kerapatan kernel trek GPS. Seharusnya berbentuk cincin, tetapi karena hanya melihat sampel dan tidak mempertimbangkan titik interpolasi antara sampel, KDE tampak lebih seperti punuk daripada cincin. Jika semua sampel yang kita tahu, maka ini adalah yang terbaik yang bisa kita lakukan. Tapi sampelnya tidak semua yang kita tahu. Kita juga tahu bahwa ada jalur di antara sampel. Untuk GPS, tidak ada rekonstruksi Nyquist yang sempurna seperti untuk audio yang terbatas band, tetapi ide dasarnya masih berlaku, dengan beberapa dugaan dalam fungsi interpolasi.