为了账号安全,请及时绑定邮箱和手机立即绑定

Matlab findpeaks 算法到 Python

Matlab findpeaks 算法到 Python

呼啦一阵风 2021-08-17 18:25:31
我正在尝试将 Matlab 提供的 findpeaks 方法应用于 Python 项目以达到相同的结果。在互联网上,我检索了许多算法来在 python 中找到峰值,但我发现的最佳来源是以下一个 -> https://github.com/MonsieurV/py-findpeaks 但是,这并没有解决我的问题。在 Matlab 中,我有这行代码:[pks, locs] = findpeaks(a, 'MINPEAKDISTANCE', 72)因此,我最初尝试使用 peakutils.indexes 提供的方法,方法如下:locs= peakutils.indexes(y=a, thres=0, min_dist=72)for val in locs:    pks.append(a[val])我不太确定 'thres=0' 但在 matlab 中,阈值的默认值是 0,即使它看起来与 peakutils.indexes 的方式不同。问题是,在 Matlab 情况下,我得到了 6635 个峰值,而在 peakutils.indexes 中,我得到了 6630 个峰值(我正在处理来自 PhysioNet 提供的 MIT-BIH ARRHYTHMIA DATABASE 的信号 108)。此外,其中一些不相等,即在 Matlab 中可能有一个峰值位于 155,而在 Python 中它位于 158,这即使是很小的差异,也会导致我的算法出现问题。我实际上正在研究这个版本的用于心电图信号分析的 pan 和 tompkins 算法-> https://it.mathworks.com/matlabcentral/fileexchange/45840-complete-pan-tompkins-implementation-ecg-qrs-detector
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

只需在没有 for 循环的情况下传递您的数据。它应该找到所有的选择。以下应该工作:

peaks = peakutils.indexes(data, thres=10/max(data), min_dist=20)

其中 data 是float64. 也许尝试玩门槛。您还应该确保min_dist小于峰值距离。

祝你好运。


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 384 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信