Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menggunakan Fungsi find_peaks dengan Berkesan untuk Pengenalpastian Puncak Tepat dalam Python/SciPy?
Tugas mengenal pasti puncak timbul dalam pelbagai aplikasi, mulai daripada mencari puncak dalam Fourier transforms (FFTs) kepada mengekstrak puncak daripada tatasusunan 2D. Cabaran biasa ialah untuk membezakan puncak sebenar daripada turun naik akibat hingar.
Daripada melaksanakan algoritma pencarian puncak dari awal, pertimbangkan untuk menggunakan scipy fungsi .signal.find_peaks. Fungsi ini menyediakan pilihan untuk menapis dan mengenal pasti puncak berdasarkan kriteria tertentu.
Untuk memanfaatkan kuasa find_peaks dengan berkesan, adalah penting untuk memahami parameternya:
Dari semua parameter, penonjolan menonjol sebagai yang paling berkesan dalam membezakan puncak sebenar daripada hingar. Takrifannya melibatkan penurunan menegak minimum yang diperlukan untuk mencapai puncak yang lebih tinggi.
Untuk menggambarkan kegunaannya, pertimbangkan sinusoid yang berbeza-beza frekuensi yang tercemar dengan bunyi. Penyelesaian yang ideal akan mengenal pasti puncak dengan tepat tanpa menyerah kepada puncak hingar palsu.
Kod berikut menunjukkan cara menggunakan fungsi find_peaks dengan pelbagai kombinasi parameter:
<code class="python">import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks # Generate signal x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) + np.random.normal(0, 1, 1000) * 0.15 # Find peaks using different parameters peaks, _ = find_peaks(x, distance=20) peaks2, _ = find_peaks(x, prominence=1) peaks3, _ = find_peaks(x, width=20) peaks4, _ = find_peaks(x, threshold=0.4) # Plot results plt.subplot(2, 2, 1) plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance']) plt.subplot(2, 2, 2) plt.plot(peaks2, x[peaks2], "ob"); plt.plot(x); plt.legend(['prominence']) plt.subplot(2, 2, 3) plt.plot(peaks3, x[peaks3], "vg"); plt.plot(x); plt.legend(['width']) plt.subplot(2, 2, 4) plt.plot(peaks4, x[peaks4], "xk"); plt.plot(x); plt.legend(['threshold']) plt.show()</code>
Seperti yang diperhatikan daripada keputusan, menggunakan penonjolan (garisan biru dalam subplot kedua) dengan berkesan mengasingkan puncak sebenar, manakala jarak, lebar dan ambang menawarkan prestasi di bawah tara dengan kehadiran bunyi.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Fungsi find_peaks dengan Berkesan untuk Pengenalpastian Puncak Tepat dalam Python/SciPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!