热度 4
2024-1-4 17:22
1507 次阅读|
1 个评论
查找序列中的脉冲峰值点位置。 W 中保存位置信息, v 中为幅度值。 常规的办法是使用相关运算使用卷积求解。这里探索一种简单粗暴的方法。先设定一个脉冲的宽度,使用这个宽度作为窗在数据序列上判断,如果中心的数据不小于两侧的数据,则判断为可能是峰。找到峰后跳过当前区间继续查找后续的数据。没找到峰则平移一格继续查找。遍历所有数据,即可找出所有峰值点。 然而数据序列的噪声点也有可能满足这个条件。找到峰值点后可以增加一个判断,峰值点需要大于平均值才能视为有效峰值点。 附 matlab 代码 % 需要把 w v 提前准备好 w = ; v = ; PEAKDUR = 8; %脉冲近似宽度 clear peak clear wave x = v; len = length(x); pcnt = 1; avg = mean(x); for i=0:len-PEAKDUR-1 trycnt = 0; for j=0:PEAKDUR/2-1 if (x(i+PEAKDUR/2+1)