matlab寻找频谱峰值,Matlab中利用findpeaks找波峰和波谷

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

pks = findpeaks(data)[pks,locs] = findpeaks(data) ------pks 对应峰值,locs 对应峰值位数[...] = findpeaks(data,'minpeakheight',mph)----mph 设定峰值的最小高度[...] = findpeaks(data,'minpeakdistance',mpd)----mpd 设定两峰值间的最小间隔数

原始波形

151705064_1_20190110091312833

波峰查找和描绘

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

>> hold on

>> plot(t,m)                                                   %绘制原波形

>> plot(maxl,maxv,'*','color','R');                %绘制最大值点

151705064_2_20190110091313271

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

波谷查找和描绘

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

因此我还是采用了findpeaks

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

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

取反后的波形如图

151705064_3_20190110091313411

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

程序:

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

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

hold on

plot(t,m)

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

151705064_4_20190110091313599

实现的波谷波形

最后的波峰波谷波形

151705064_5_20190110091313708

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值