Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich signifikante Peaks in Python mithilfe der find_peaks-Funktion von SciPy?

Wie finde ich signifikante Peaks in Python mithilfe der find_peaks-Funktion von SciPy?

DDD
DDDOriginal
2024-10-22 20:33:13338Durchsuche

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

Spitzen in Python/SciPy finden

Spitzen in Daten zu finden ist eine häufige Aufgabe in verschiedenen Bereichen, einschließlich Signalverarbeitung, Bildanalyse usw Datenanalyse. Python bietet mehrere Pakete und Funktionen zur Peak-Erkennung, einschließlich der Funktion scipy.signal.find_peaks von SciPy.

SciPys Peak-Finding-Algorithmus

Die Funktion find_peaks verwendet ein 1D-Array als Eingabe und gibt die Indizes der Peaks zurück. Es verwendet einen Peak-Finding-Algorithmus, der Peaks anhand mehrerer Parameter erkennt:

  • Breite:Mindestabstand zwischen Peaks in Proben.
  • Schwellenwert: Mindestamplitudenschwelle für die Spitzenerkennung.
  • Abstand:Mindestabstand zwischen aufeinanderfolgenden Spitzen.
  • Protuberanzen: Topografische Prominenz, die die misst relative Höhe eines Peaks im Vergleich zu seiner Umgebung.

Prominenz zur Rauschunterdrückung

Der Prominenzparameter ist besonders nützlich, um signifikante Peaks von rauschinduzierten Peaks zu unterscheiden . Unter Prominenz versteht man die minimale Abstiegshöhe, um vom Gipfel in höher gelegenes Gelände zu gelangen. Durch Festlegen eines hohen Hervorhebungsschwellenwerts kann der Algorithmus kleinere, durch Rauschen verursachte Spitzen effektiv herausfiltern.

Beispielverwendung

Der folgende Code demonstriert die Spitzensuche in einer verrauschten Frequenz -Variierende Sinuskurve mit der Funktion „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>

Wie im Diagramm gezeigt, findet die Funktion „find_peaks“ Spitzen mit hoher Amplitude und Prominenz und filtert rauschbedingte Spitzen effektiv heraus.

Andere Peak-Finding-Optionen

Zusätzlich zu find_peaks bietet SciPy auch andere Peak-Finding-Funktionen, wie z. B. Peak_widths und argrelmax. Diese Funktionen eignen sich möglicherweise besser für bestimmte Anwendungen oder Anpassungen.

Fazit

SciPys Funktion scipy.signal.find_peaks bietet eine robuste und vielseitige Lösung für die Peaksuche in Python . Seine einstellbaren Parameter, einschließlich der Prominenz, ermöglichen eine individuelle Anpassung, um signifikante Spitzen in verschiedenen Datentypen zu erkennen.

Das obige ist der detaillierte Inhalt vonWie finde ich signifikante Peaks in Python mithilfe der find_peaks-Funktion von SciPy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn