打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Matlab中利用findpeaks找波峰和波谷

转自:https://blog.csdn.net/it_beecoder/article/details/78681517


原波形 为250HZ的正弦波型,findpeaks 寻找峰值函数


pks = findpeaks(data)

[pks,locs] = findpeaks(data) ------pks 对应峰值,locs 对应峰值位数

[...] = findpeaks(data,'minpeakheight',mph)----mph 设定峰值的最小高度

[...] = findpeaks(data,'minpeakdistance',mpd)----mpd 设定两峰值间的最小间隔数


原始波形




波峰查找和描绘

>> [maxv,maxl]=findpeaks(m,'minpeakdistance',100); %maxv峰峰值点  maxl:峰峰值点对应的位置   最小间隔=100  

>> hold on
>> plot(t,m)                                                   %绘制原波形
>> plot(maxl,maxv,'*','color','R');                %绘制最大值点



通过增加 最小间隔条件 可以过滤掉单周期内的干扰极值          mpb的值 建议取       周期/1.5   具体看自己的波形做调整


波谷查找和描绘


由于findpeaks不带直接查找波谷,因此需要用些方法来查找,网上的diff方法,不适用于单周期内有干扰极值的情况。

因此我还是采用了findpeaks

首先  将原波形数据 “取反”      m=原始数据(数组类型)

nm=3000-m ;    %  3000是原始数据中的最大值限度 

取反后的波形如图


然后再使用findpeaks 找出取反后的波形中的峰峰值的位置即可

程序:

nm=3000-m(t);% 数组整体减 

[minv,minl]=findpeaks(nm,'minpeakdistance',100); %maxv峰峰值点  maxl:峰峰值点对应的位置

hold on

plot(t,m)

plot(minl,m(minl),'*','color','G');                %绘制最大值点



实现的波谷波形


最后的波峰波谷波形

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
静脉导管
matlab中findpeaks算法解析(MinPeakDistance)
周三讲座||【脉诊入门(五)】脉象描述
如果你还不会技术分析,至少要懂支撑与阻挡!
波峰波谷,那是燃烧的生命
【父母空间】成功
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服