SciPy の find_peaks 関数を使用して Python で重要なピークを見つける方法

DDD
リリース: 2024-10-22 20:33:13
オリジナル
267 人が閲覧しました

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

Python/SciPy でのピークの検出

データ内のピークの検出は、信号処理、画像解析、信号処理などのさまざまな分野で一般的なタスクです。データ分析。 Python は、SciPy の scipy.signal.find_peaks 関数など、ピーク検出用のいくつかのパッケージと関数を提供します。

SciPy のピーク検出アルゴリズム

find_peaks 関数は、次のように 1D 配列を受け取ります。を入力してピークのインデックスを返します。これは、いくつかのパラメータに基づいてピークを検出するピーク検出アルゴリズムを採用しています:

  • 幅: サンプル内のピーク間の最小分離。
  • しきい値: ピーク検出の最小振幅しきい値。
  • 距離: 連続するピーク間の最小距離。
  • プロミネンス: 地形プロミネンス。周囲と比較したピークの相対的な高さ。

ノイズ除去のプロミネンス

プロミネンス パラメーターは、重要なピークとノイズ誘発ピークを区別するのに特に役立ちます。 。プロミネンスは、山頂からより高い地形に到達するための最小高さの降下として定義されます。プロミネンスしきい値を高く設定することで、アルゴリズムはノイズによって引き起こされる小さなピークを効果的に除去できます。

使用例

次のコードは、ノイズの多い周波数でのピーク検出を示しています。 -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>
ログイン後にコピー

プロットに示されているように、find_peaks 関数は高振幅とプロミネンスの両方を持つピークを見つけ、ノイズに起因するピークを効果的に除去します。

その他のピーク検索オプション

find_peaks に加えて、SciPy は、peak_widths や argrelmax などの他のピーク検索機能も提供します。これらの関数は、特定のアプリケーションや調整により適している可能性があります。

結論

SciPy の scipy.signal.find_peaks 関数は、Python でのピーク検出のための堅牢で汎用性の高いソリューションを提供します。 。プロミネンスなどの調整可能なパラメーターを使用して、さまざまな種類のデータの重要なピークを検出するようにカスタマイズできます。

以上がSciPy の find_peaks 関数を使用して Python で重要なピークを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!