亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 474 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號