Bagaimana untuk Menggunakan Fungsi find_peaks dengan Berkesan untuk Pengenalpastian Puncak Tepat dalam Python/SciPy?

Patricia Arquette
Lepaskan: 2024-10-22 19:26:34
asal
246 orang telah melayarinya

How to Effectively Utilize the find_peaks Function for Accurate Peak Identification in Python/SciPy?

Algoritma Pencarian Puncak untuk Python/SciPy

Pernyataan Masalah

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.

Fungsi Pencarian Puncak Sedia Ada dalam Python/SciPy

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.

Memahami Parameter find_peaks

Untuk memanfaatkan kuasa find_peaks dengan berkesan, adalah penting untuk memahami parameternya:

  • lebar: Lebar minimum puncak.
  • ambang: Perbezaan minimum antara puncak dan jirannya.
  • jarak : Jarak minimum antara puncak berturut-turut.
  • penonjolan: Ketinggian minimum yang diperlukan untuk turun dari puncak untuk mencapai rupa bumi yang lebih tinggi.

Penekanan pada Penonjolan

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.

Contoh Aplikasi: Sinusoid Pembeza-Frekuensi

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.

Demonstrasi Kod

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan