import numpy as np
from scipy.signal import find_peaks
import matplotlib.pyplot as plt# 生成示例數據
x = np.linspace(0, 10, 100)
y = np.sin(x)# 查找峰值
peaks, _ = find_peaks(y)# 繪制曲線和峰值點
plt.plot(x, y)
plt.plot(x[peaks], y[peaks], 'ro')# 顯示峰值個數
num_peaks = len(peaks)
plt.title(f"Number of peaks: {num_peaks}")# 顯示圖形
plt.show()
獲得曲線峰值的個數是在信號處理、數據分析和統計學等領域中常見的問題。一種常用的方法是通過峰值檢測算法來實現。以下是一種常見的方法及其原理:
-
平滑化:首先對待分析的曲線進行平滑處理,以減少干擾和噪音的影響。常用的平滑方法包括移動平均、高斯濾波等。
-
尋找極值點:在平滑后的曲線上,尋找所有的極值點,即局部最大值和局部最小值。這可以通過計算曲線的一階導數或二階導數,或者使用滑動窗口等方法來實現。
-
峰值篩選:根據具體的需求,對極值點進行篩選,例如只保留比周圍值大于某個閾值的極值,或者根據極值點的相對大小進行篩選。
-
峰值計數:對篩選后的極值點進行計數,即為曲線的峰值個數。
常見的峰值檢測算法包括基于閾值的方法、基于波形形狀的方法(如基于導數的方法、基于小波變換的方法)、基于統計特征的方法等。選擇合適的方法取決于數據的特性以及具體的分析目的。
總的來說,獲得曲線峰值的個數的方法涉及到信號處理、數據分析和統計學等多個領域的知識,需要綜合考慮數據的特性和分析的要求來選擇合適的方法。
參考:
python 尋找峰值_python求數組每行的峰值-CSDN博客
Python 尋找復雜曲線峰值_mob64ca12d9b014的技術博客_51CTO博客
Python常用的峰值查找算法整理(peak detection) - 知乎