搜索
bottom↓
回复: 24

有什么比较简单的算法能检测波峰的

[复制链接]

出0入0汤圆

发表于 2019-4-9 16:30:25 | 显示全部楼层 |阅读模式
如图,一组数据,SPI读取的一组数组,实际需要计算出第一个波峰对应的数组下标就可以

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2019-4-9 16:42:29 来自手机 | 显示全部楼层
设置1个变量,初始为最小值0,然后搜寻整个数组

出0入0汤圆

发表于 2019-4-9 16:42:54 | 显示全部楼层
不就是求最大值吗

出0入0汤圆

 楼主| 发表于 2019-4-9 16:45:42 | 显示全部楼层
lgg88 发表于 2019-4-9 16:42
不就是求最大值吗

不行,这样求出是第二个峰。
这是刚刚拷出来的数据,有可能三个峰,但是要的是第一个峰

出0入0汤圆

发表于 2019-4-9 16:48:10 | 显示全部楼层
如果很光滑的话,找比左、右好几个点都大的点,如果不光滑的话,滤一下波再求就行了

出0入0汤圆

发表于 2019-4-9 16:50:59 | 显示全部楼层
    PointTmp = CFFTin[0];
    if (CFFTin[0] > CFFTin[1]){
        CFFTin[0] = 0.0;
    }
    for(i = 1; i < Len - 1; i++){
        PointMax = Max(PointTmp, CFFTin[i + 1]);
        PointTmp = CFFTin[i];
        if (CFFTin[i] <= PointMax){
            CFFTin[i] = 0.0;
        }
    }
不为0的点都是峰值点, 通过门限挑出需要的峰值点

出0入0汤圆

发表于 2019-4-9 17:00:20 | 显示全部楼层
根据你的信号频率,加窗求最大值就行了吧

出0入0汤圆

发表于 2019-4-9 17:02:14 | 显示全部楼层
统计学如何
类似算正态分布

出0入0汤圆

发表于 2019-4-9 17:15:49 | 显示全部楼层
跌落足够大就认为是第一个峰

出0入0汤圆

发表于 2019-4-9 17:35:28 | 显示全部楼层
求导啊,字数补丁

出0入0汤圆

发表于 2019-4-9 18:09:11 | 显示全部楼层
先求导,导数符号变化的点就是波峰,然后提取大信号波峰

出0入0汤圆

发表于 2019-4-9 18:13:18 | 显示全部楼层
你这个不是很简单,首先,遍历一边数组,找出远大于平均值的N项,然后看这N项那个是这个数组里面的下标最小的那个不就行了

出0入0汤圆

发表于 2019-4-9 19:44:43 来自手机 | 显示全部楼层
一阶求导可以求波峰波谷,要区分是波峰还是波谷,用二阶求导后看数字符号。

出0入37汤圆

发表于 2019-4-9 19:47:09 | 显示全部楼层
之前的若干个数和之后的若干个数,都比他小,这个值就是波峰

出0入0汤圆

发表于 2019-4-9 20:35:09 | 显示全部楼层
本帖最后由 微辣的辣鸡 于 2019-4-9 20:36 编辑

电压比较器的思想可以做,软件或硬件方法都可以完成,设定400为上限阈值,然后算两个脉冲中点处的数组间隔

出0入0汤圆

发表于 2019-4-9 21:00:50 | 显示全部楼层
微辣的辣鸡 发表于 2019-4-9 20:35
电压比较器的思想可以做,软件或硬件方法都可以完成,设定400为上限阈值,然后算两个脉冲中点处的数组间隔 ...

幅值可能不定呐

出0入0汤圆

发表于 2019-4-9 21:30:37 来自手机 | 显示全部楼层
matlab findpeaks,可以找出所有的局部峰值点及其位置,然后筛出需要的即可

出0入0汤圆

发表于 2019-4-10 08:47:09 | 显示全部楼层
这个要做稳定不太好做的,尤其是数值噪声比较大时,容易误检测。一般是时间上加窗和幅值加窗做判断检测,单都要根据信号的特性做调整的。

出0入264汤圆

发表于 2019-4-10 09:34:42 | 显示全部楼层

刚好以前做过图像处理中的边缘查找算法。
应该和你这个比较类似。
主要方法是求导,找到所有的峰值点。然后设定一个阈值。你这里只需要取大于阈值条件的第一个峰值点即可。
我贴出的图像是取最大的峰值点。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-4-10 10:12:53 | 显示全部楼层
mcu_lover 发表于 2019-4-10 09:34
刚好以前做过图像处理中的边缘查找算法。
应该和你这个比较类似。
主要方法是求导,找到所有的峰值点。然 ...

那我是得算出函数式再来求导吗?
还是???
谢谢

出0入0汤圆

发表于 2019-4-10 10:23:41 | 显示全部楼层
呼叫豹警官

出0入264汤圆

发表于 2019-4-10 11:50:06 | 显示全部楼层
wongT 发表于 2019-4-10 10:12
那我是得算出函数式再来求导吗?
还是???
谢谢

对于你这个应用直接f(x+1) - f(x) 就可以了。 x就是数组下标,y就是数组对应下标的值
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-24 20:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表