Maison  >  Article  >  développement back-end  >  Comment trouver des pics significatifs en Python à l'aide de la fonction find_peaks de SciPy ?

Comment trouver des pics significatifs en Python à l'aide de la fonction find_peaks de SciPy ?

DDD
DDDoriginal
2024-10-22 20:33:13268parcourir

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

Recherche de pics en Python/SciPy

La recherche de pics dans les données est une tâche courante dans divers domaines, notamment le traitement du signal, l'analyse d'images et analyse des données. Python fournit plusieurs packages et fonctions pour la détection des pics, y compris la fonction scipy.signal.find_peaks de SciPy.

Algorithme de recherche de pic de SciPy

La fonction find_peaks prend un tableau 1D comme entrée et renvoie les indices des pics. Il utilise un algorithme de recherche de pics qui détecte les pics en fonction de plusieurs paramètres :

  • largeur : Séparation minimale entre les pics dans les échantillons.
  • seuil : Seuil d'amplitude minimum pour la détection des pics.
  • distance : Distance minimale entre des pics consécutifs.
  • proéminence : Proéminence topographique, qui mesure la hauteur relative d'un pic par rapport à son environnement.

Proéminence pour le rejet du bruit

Le paramètre de proéminence est particulièrement utile pour distinguer les pics importants des pics induits par le bruit . La proéminence est définie comme la hauteur de descente minimale pour passer du sommet à un terrain plus élevé. En définissant un seuil de proéminence élevé, l'algorithme peut filtrer efficacement les pics mineurs causés par le bruit.

Exemple d'utilisation

Le code suivant illustre la recherche de pics dans une fréquence bruyante. -sinusoïde variable à l'aide de la fonction 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>

Comme démontré dans le graphique, la fonction find_peaks trouve des pics à la fois de forte amplitude et de forte importance, filtrant efficacement les pics induits par le bruit.

Autres options de recherche de pics

En plus de find_peaks, SciPy fournit également d'autres fonctionnalités de recherche de pics, telles que Peak_widths et argrelmax. Ces fonctions peuvent être plus adaptées à des applications ou à des ajustements spécifiques.

Conclusion

La fonction scipy.signal.find_peaks de SciPy fournit une solution robuste et polyvalente pour la recherche de pics en Python . Ses paramètres réglables, dont la proéminence, permettent une personnalisation pour détecter des pics significatifs dans différents types de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn