如何统计一段离散信号中波峰的个数呢?来看下面一段波形:
可以非常容易数出波峰的个数3,我们都知道波峰是一段波中的局部最高点,那么此时我们只要找到这样一个点满足:
High(x1)>High(x1-1)
High(x1)>High(x1+1)
即此时x1的值大于其左右两边的值,就可以确定一个波峰了。代码实现一下:
public static int getPeakNum1(float[] data){
int peak=0;
for (int i=0;i<data.length-1;i++){
if (data[i]>data[i-1]&&data[i]>data[i+1]){
peak++;
i++;
}
}
return peak;
}
看起来好像没问题,接着看下面这两幅图: