Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencari Puncak Penting dalam Python Menggunakan Fungsi find_peaks SciPy?

Bagaimana untuk Mencari Puncak Penting dalam Python Menggunakan Fungsi find_peaks SciPy?

DDD
DDDasal
2024-10-22 20:33:13341semak imbas

How to Find Significant Peaks in Python Using SciPy's find_peaks Function?

Mencari Puncak dalam Python/SciPy

Mencari puncak dalam data ialah tugas biasa dalam pelbagai bidang, termasuk pemprosesan isyarat, analisis imej dan analisis data. Python menyediakan beberapa pakej dan fungsi untuk pengesanan puncak, termasuk fungsi scipy.signal.find_peaks SciPy.

Algoritma Pencarian Puncak SciPy

Fungsi find_peaks mengambil tatasusunan 1D sebagai input dan mengembalikan indeks puncak. Ia menggunakan algoritma pencarian puncak yang mengesan puncak berdasarkan beberapa parameter:

  • lebar: Pemisahan minimum antara puncak dalam sampel.
  • ambang: Ambang amplitud minimum untuk pengesanan puncak.
  • jarak: Jarak minimum antara puncak berturut-turut.
  • penonjolan: Penonjolan topografi, yang mengukur ketinggian relatif puncak berbanding dengan persekitarannya.

Penonjolan untuk Penolakan Bunyi

Parameter penonjolan amat berguna untuk membezakan puncak yang ketara daripada puncak yang disebabkan oleh hingar . Penonjolan ditakrifkan sebagai penurunan ketinggian minimum untuk pergi dari puncak ke mana-mana rupa bumi yang lebih tinggi. Dengan menetapkan ambang penonjolan yang tinggi, algoritma boleh menapis dengan berkesan puncak kecil yang disebabkan oleh hingar.

Contoh Penggunaan

Kod berikut menunjukkan pencarian puncak dalam frekuensi yang bising -mempelbagaikan sinusoid menggunakan fungsi find_peaks:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks

x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) + np.random.normal(0, 1, 1000) * 0.15
peaks_prominence, _ = find_peaks(x, prominence=1)

plt.plot(x)
plt.plot(peaks_prominence, x[peaks_prominence], "ob")
plt.legend(['Signal', 'Peaks (prominence)'])
plt.show()</code>

Seperti yang ditunjukkan dalam plot, fungsi find_peaks menemui puncak dengan amplitud tinggi dan penonjolan, dengan berkesan menapis puncak yang disebabkan oleh hingar.

Pilihan Pencarian Puncak Lain

Selain find_peaks, SciPy juga menyediakan fungsi mencari puncak lain, seperti peak_widths dan argrelmax. Fungsi ini mungkin lebih sesuai untuk aplikasi atau pelarasan tertentu.

Kesimpulan

Fungsi scipy.signal.find_peaks SciPy menyediakan penyelesaian yang mantap dan serba boleh untuk pencarian puncak dalam Python . Parameter boleh larasnya, termasuk penonjolan, membolehkan penyesuaian untuk mengesan puncak yang ketara dalam pelbagai jenis data.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Puncak Penting dalam Python Menggunakan Fungsi find_peaks SciPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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