编程语言
首页 > 编程语言> > 寻峰函数fIndpeaks的C++实现

寻峰函数fIndpeaks的C++实现

作者:互联网

最近项目需要把matlab转C++,并且尽可能将运行速度提高。寻峰函数findpeaks是一维信号处理中常用的函数,我实现了时间复杂度为O(Nlog(N))版本。

注: 主要实现了筛选了最小距离的版本,等价于matlab中 findpeaks(sig,"minpeakdistance",distance)

参考链接:https://blog.csdn.net/yfl_jybq/article/details/100114952

整个算法主要分成三部分:

1、计算二阶差分,得到所有的峰值索引 (时间复杂度O(N))

2、对峰值索引按照峰值大小降序(快速排序)  (时间复杂度O(Nlog(N)))

3、从小到大,对峰值索引进行筛选,排除已入选的索引左右distance距离的峰值索引 时间复杂度O(Nlog(N)))

 

代码已经放在github上,如果能帮上你,麻烦点个star,链接:https://github.com/anzhi998/findpeaks

标签:寻峰,C++,复杂度,峰值,索引,Nlog,fIndpeaks,https,findpeaks
来源: https://www.cnblogs.com/xjknb/p/15664461.html