求一突波检测算法

2019-12-10 18:21发布

本帖最后由 Junsea 于 2018-1-4 11:40 编辑

信号波形如图,波形上有叠加一些随机的突波(红 {MOD}箭头位置),信号本身有幅值不大的毛刺,毛刺的幅值远小于突波。
基值是浮动的,假设图中基值x(x取值范围50~1000),x值随机且在检测过程中会随机变化,毛刺为 x±5,而突波为 x+20 以上
采用什么软件算法能够可靠的检出图中突波
求思路,谢谢!!

2018-01-04 补充:
1、图示数据来源是通过AD采集后通过串口送到电脑,然后通过serial chart显示的
2、真实突波信号并非如图那么陡峭,是类似于正弦波的正半波,突波通常持续时长为0.1ms至5ms间,突波的相对幅值范围为+15~+150
3、AD采样频率为20KHz

编辑原因:增加数据描述
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
55条回答
lsx007
2019-12-14 06:18
难道不就是CFAR检测? 找尖峰,过门限就取出来,做下一步处理,下面是我写过的一段检测尖峰代码:
        PointTmp = EnergyDataTmp[0];
        for (j = 1; j < CFARDetectStruct.XLocalRange; j++){
                PointMax = Max(PointTmp, EnergyDataTmp[j + 1]);
                PointTmp = EnergyDataTmp[j];
                if (EnergyDataTmp[j] <= PointMax){
                        EnergyDataTmp[j] = 0.0;
                }else{
                        if ((PointTmp > CFARDetectStruct.ThresholdL1) && (pCohesionDataL1->Num < COHESION_DATA_LEN)){
                                        pCohesionDataL1->XLocal[pCohesionDataL1->Num]     = CFARDetectStruct.XLocalOffset + j -1;
                                        pCohesionDataL1->EnergyData[pCohesionDataL1->Num] = PointTmp ;
                                        pCohesionDataL1->Num++;
                        }
            }
        }

一周热门 更多>