Prominence 如何幫助使用 SciPy 在 Python 中進行峰值檢測?

Mary-Kate Olsen
發布: 2024-10-22 22:44:29
原創
380 人瀏覽過

How Does Prominence Help in Peak Detection in Python Using SciPy?

Python/SciPy 中的峰值偵測演算法

偵測資料中的峰值是資料分析中的常見任務。對於 Python 用戶,SciPy 提供了專門為此目的定制的 scipy.signal.find_peaks 函數。

選擇正確的參數

要有效識別峰值,請了解可用的參數參數至關重要。雖然寬度、閾值和距離等參數具有一定的實用性,但真正區分真實峰值和雜訊的參數是突出度

什麼是突出度?

突出度測量從山峰下降到任何更高地形所需的高度。換句話說,它表示峰值相對於周圍數據點的“重要性”。

使用突出度進行峰值檢測

使用頻率變化的正弦曲線測試 find_peaks 演示了顯著性的有效性。雖然其他參數很難考慮不同的峰寬或雜訊水平,但突出度始終能夠識別重要的峰值。

程式碼範例

以下程式碼片段說明了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, _ = find_peaks(x, distance=20)
peaks2, _ = find_peaks(x, prominence=1)      # BEST!
peaks3, _ = find_peaks(x, width=20)
peaks4, _ = find_peaks(x, threshold=0.4)

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>
登入後複製

結果表明,即使存在噪聲,突出度也能有效辨識顯著峰值。透過將突出度等參數與距離或寬度等其他參數結合,您可以進一步細化複雜資料中的峰值偵測。

以上是Prominence 如何幫助使用 SciPy 在 Python 中進行峰值檢測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板