scipy.signal.find_peaks(峰值检测)
函数用法:
scipy.signal.find_peaks(x, height=None, threshold=None, distance=None, prominence=None, width=None, wlen=None, rel_height=0.5, plateau_size=None)
解释:输入
x: 带有峰值的信号序列
height: 低于指定height的信号都不考虑
threshold: 其与相邻样本的垂直距离
distance: 相邻峰之间的最小水平距离, 先移除较小的峰,直到所有剩余峰的条件都满足为止。
prominence: 个人理解是突起程度,详见peak_prominences
width: 波峰的宽度,详见peak_widths
plateau_size: 保证峰对应的平顶数目大于给定值
返回值:
peaks: x对应的峰值的索引
properties:
height--> ‘peak_heights’
threshold-->‘left_thresholds’, ‘right_thresholds’
prominence-->‘prominences’, ‘right_bases’, ‘left_bases’
width-->‘width_heights’, ‘left_ips’, ‘right_ips’
plateau_size-->‘plateau_sizes’, left_edges’, ‘right_edges’
小列子01:
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
import numpy as np
x = electrocardiogram()[2000:4000]
peaks, _ = find_peaks(x, height=0)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.plot(np.zeros_like(x), "--", color="gray")
plt.show()
小列子02:
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
import numpy as np
#选择大于0的
# x = electrocardiogram()[2000:4000]
# peaks, _ = find_peaks(x, height=0)
# plt.plot(x)
# plt.plot(peaks, x[peaks], "x")
# plt.plot(np.zeros_like(x), "--", color="gray")
# plt.show()#小于0一下的
x = electrocardiogram()[2000:4000]
border = np.sin(np.linspace(0, 3 * np.pi, x.size))
peaks, _ = find_peaks(x, height=(-border, border))
plt.plot(x)
plt.plot(-border, "--", color="gray")
plt.plot(border, ":", color="gray")
plt.plot(peaks, x[peaks], "x")
plt.show()
小列子03:
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
import numpy as np#我们可以通过要求至少150个样本的距离来轻松选择心电图(ECG)中QRS络合物的位置
x = electrocardiogram()[2000:4000]
peaks, _ = find_peaks(x, distance=150)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.show()
小列子04:
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
import numpy as np#通过将允许的突出限制为0.6
x = electrocardiogram()[2000:4000]
peaks, properties = find_peaks(x, prominence=(None, 0.6))
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.show()
小列子05:
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
import numpy as np#要仅选择非典型心跳,我们将两个条件结合起来:最小突出1和至少20个样本的宽度。
x = electrocardiogram()[17000:18000]
peaks, properties = find_peaks(x, prominence=1, width=20)plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.vlines(x=peaks, ymin=x[peaks] - properties["prominences"],ymax = x[peaks], color = "C1")
plt.hlines(y=properties["width_heights"], xmin=properties["left_ips"],xmax=properties["right_ips"], color = "C1")
plt.show()
scipy.signal.find_peaks(峰值检测)相关推荐
- scipy.signal信号处理的库(笔记06)
信号处理(scipy.signal) 网址:https://docs.scipy.org/doc/scipy/reference/signal.html#scipy.signal 卷积 convolv ...
- 利用 scipy.signal中的spectrogram分析信号的时频联合分布
简 介: 通过时频分布可以分析出时变信号的内部频谱结构的变化.但对于普通的窄带信号,求取的频谱中具有比较高的峰值,在使用普通的热力图显示的时候,过高的峰值数据会将峰值比较小的频谱进行压制.对结果中的过 ...
- 中值滤波scipy.signal.medfilt()方法
中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的中位数代替 .与邻域平均法类似,但计算的是中值. 用scipy.signal.medfilt()实现中值滤波 函数原型: scip ...
- Python知识: scipy signal.chirp用法例
一.说明 scipy signal.chirp是产生波形的函数,可以虚拟出声音波形.与Wave配合可以实现虚拟音响. 二.函数用法 scipy.signal.chirp(t, f0, t1, f1, ...
- python 希尔伯特变换_python scipy signal.hilbert用法及代码示例
使用希尔伯特变换来计算分析信号. 默认情况下,转换是沿着最后一个轴完成的. 参数: x:array_like信号数据.必须是真实的. N:int, 可选参数傅立叶分量的数量.默认:x.shape[ax ...
- 巴特沃斯滤波器python_如何用Scipy.signal.bu实现带通巴特沃斯滤波器
您可以跳过button的使用,而只需为过滤器选择一个顺序,看看它是否符合您的过滤条件.要生成带通滤波器的滤波器系数,请将滤波器阶数.截止频率Wn=[low, high](表示为奈奎斯特频率的分数,即采 ...
- AttributeError: module ‘scipy.signal‘ has no attribute ‘correlation_lags‘
一般这种问题,都是版本号不匹配的问题,通过 pip 更新安装包即可 我原来scipy的版本号是 1.5.2,执行代码 lags = signal.correlation_lags(len(u), le ...
- scipy库 signal 导入_Python scipy.signal方法代码示例
本文整理汇总了Python中scipy.signal方法的典型用法代码示例.如果您正苦于以下问题:Python scipy.signal方法的具体用法?Python scipy.signal怎么用?P ...
- scipy.signal.peak_prominences解析
函数格式: scipy.signal.peak_prominences(x, peaks, wlen=None)[source] 一个波峰的prominences指的是: The prominence ...
最新文章
- 【错误记录】Android Studio 编译报错 ( Invalid main APK outputs : EarlySyncBuildOutput )
- 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了...
- 【转】Plotting texts as graphs with R and igraph
- Win10/Win7小技巧:教你如何彻底关闭系统进程
- 蓝桥杯 基础练习 数的读法
- 终极之战:Linux Windows
- 计算机网络第三版周舸答案,计算机网络技术基础第3版周舸第一章节计算机网络基础知识课件教学.ppt...
- h5前端开发,96道前端面试题
- TwinCAT 3 轴程序
- 拼多多进军社区团购 店宝宝:巨头竞争加剧
- 多边形Polygon
- 当Apple TV+的生态化反梦,撞上一个“日渐昂贵”的流媒体市场
- 服务器winsxs文件夹怎么清理工具,winsxs,详细教您winsxs文件夹清理方法
- Java SpringMVC毕业项目实战-学生信息管理系统
- TESTTESTTESTTESTTESTTEST
- IOS 移动端视频播放不全屏
- 语义分析的一些方法(三)
- 黄金发展期已远,蜻蜓、荔枝、喜马拉雅们下一个增长点何在?
- 正弦波和方波发生器的设计
- 【CATIA的Mac地址错误】