Pendekatan lain (lebih banyak kata, lebih sedikit kode) yang mungkin membantu:
Lokasi maksimum dan minimum lokal juga merupakan lokasi penyeberangan nol dari turunan pertama. Secara umum, jauh lebih mudah untuk menemukan penyeberangan nol daripada menemukan langsung maksima dan minimum lokal.
Sayangnya, turunan pertama cenderung "memperkuat" derau, jadi ketika derau yang signifikan hadir dalam data asli, turunan pertama paling baik digunakan hanya setelah data asli menerapkan beberapa tingkat penghalusan.
Karena penghalusan, dalam arti yang paling sederhana, filter lolos rendah, penghalusan sering kali paling baik (baik, paling mudah) dilakukan dengan menggunakan kernel konvolusi, dan "membentuk" kernel tersebut dapat memberikan jumlah yang mengejutkan dari kemampuan mempertahankan / meningkatkan fitur . Proses menemukan kernel yang optimal dapat diotomatiskan menggunakan berbagai cara, tetapi yang terbaik mungkin adalah kekerasan sederhana (sangat cepat untuk menemukan kernel kecil). Kernel yang baik akan (sebagaimana dimaksud) secara besar-besaran mendistorsi data asli, tetapi TIDAK akan mempengaruhi lokasi puncak / lembah yang diinginkan.
Untungnya, sering kali kernel yang sesuai dapat dibuat melalui SWAG sederhana ("tebakan secara cerdas"). Lebar kernel penghalus harus sedikit lebih lebar dari puncak terlebar yang diharapkan "menarik" dalam data asli, dan bentuknya akan menyerupai puncak itu (wavelet berskala tunggal). Untuk kernel yang menjaga rata-rata (filter penghalus yang bagus), jumlah elemen kernel harus sama persis dengan 1,00, dan kernel harus simetris dengan bagian tengahnya (artinya akan memiliki jumlah elemen ganjil.
Mengingat kernel penghalusan yang optimal (atau sejumlah kecil kernel yang dioptimalkan untuk konten data yang berbeda), tingkat penghalusan menjadi faktor penskalaan untuk ("perolehan") kernel konvolusi.
Menentukan derajat pemulusan yang "benar" (optimal) (penguatan kernel konvolusi) bahkan dapat diotomatiskan: Bandingkan deviasi standar data turunan pertama dengan deviasi standar data yang dihaluskan. Bagaimana rasio dari dua deviasi standar berubah dengan perubahan tingkat penghalusan cam digunakan untuk memprediksi nilai penghalusan yang efektif. Beberapa data manual yang dijalankan (yang benar-benar representatif) seharusnya menjadi semua yang dibutuhkan.
Semua solusi sebelumnya yang diposting di atas menghitung turunan pertama, tetapi solusi di atas tidak memperlakukannya sebagai ukuran statistik, juga tidak solusi di atas mencoba melakukan pelestarian fitur / peningkatan penghalusan (untuk membantu puncak halus "melompati" kebisingan).
Akhirnya, berita buruknya: Menemukan puncak yang "nyata" menjadi masalah besar ketika kebisingan juga memiliki fitur yang terlihat seperti puncak nyata (bandwidth yang tumpang tindih). Solusi yang lebih kompleks berikutnya umumnya menggunakan kernel konvolusi yang lebih panjang ("bukaan kernel yang lebih lebar") yang memperhitungkan hubungan antara puncak "nyata" yang berdekatan (seperti kecepatan minimum atau maksimum untuk kejadian puncak), atau menggunakan beberapa lintasan konvolusi menggunakan kernel yang memiliki lebar berbeda (tetapi hanya jika lebih cepat: merupakan kebenaran matematika fundamental bahwa konvolusi linier yang dilakukan secara berurutan selalu dapat digabung menjadi satu konvolusi tunggal). Tetapi seringkali jauh lebih mudah untuk terlebih dahulu menemukan urutan kernel yang berguna (dengan lebar yang bervariasi) dan menggabungkannya bersama-sama daripada mencari langsung kernel akhir dalam satu langkah.
Mudah-mudahan ini memberikan info yang cukup untuk membiarkan Google (dan mungkin teks statistik yang bagus) mengisi kekosongan. Saya sangat berharap saya punya waktu untuk memberikan contoh yang berhasil, atau tautan ke salah satunya. Jika ada yang menemukannya secara online, silakan posting di sini!