联动上一贴:https://www.v2ex.com/t/866781
实际需求:搜峰。
衍生需求:根据楼里老哥回复,大概是需要对曲线进行平滑以后才好进行搜峰。但是通常来说的平滑算法,比如以一个 1*3 的[1,1,1]卷积核做平滑,感觉平滑效果上不是很好,另外如果要大量计算的话速度也需要考虑在内。请问有什么性能和效果都比较好的搜峰算法么?直接算邻域平均感觉太原始了,这么多年算法发展应该有更好的选择吧。。
1
tcp 2022-07-18 08:39:49 +08:00 via Android
可以参照 p5.js 的 peak detection
|
2
secsilm 2022-07-18 08:45:49 +08:00 via Android
tensorboard 的平滑算法,有一个平滑系数,可以搜一搜。之前我也挺感兴趣,后来忙的没再研究了。
|
3
h272377502 2022-07-18 09:15:32 +08:00 via Android
试试 EMA
|
4
lingxipaofan 2022-07-18 09:51:12 +08:00
单看你发的曲线,平滑度没啥问题,搜峰就行,找到合适阈值。真想做滤波,看看信号处理相关的。
|
5
blueperson 2022-07-18 11:37:07 +08:00
我觉得问题还是在于峰的定义. 以前我也碰到到跟你差不多的需求, X 光衍射图寻峰. 主要问题是, 你是想消除噪声, 还是找出所有的 local maximum. 如果要消除噪声, 就要先确定, 第一, 这个图像是有噪声的, 其次, 定义噪声类型. "消除噪声"后, 一般就平滑了. 然后再找局部极大值.
|
6
qwq11 2022-07-18 12:04:15 +08:00 via Android
两次 rolling mean 一般就够平滑了,就是你说的卷积
你说的峰值是极大值点?差分之后左右邻域异号,左正右负不就是了,你在这时候做 rolling mean 还更方便,时间上也就 o(n),再把各个极大值点拿出来比较一下就出来了 |
7
CFM880 2022-07-18 12:45:09 +08:00
1.算术滑动平均法(平均移动法)
2.重心法 3.多项式最小二乘拟合法, 4.其他 离散函数褶积滑动变换法 傅里叶变换法 |
8
necomancer 2022-07-18 13:39:00 +08:00
1.试试其他卷积核,比如钟形窗
2.如果是分布数据,别用 histogram ,试试不同 bw 的 kde |
9
LeeReamond OP @necomancer 大佬,bw 不同的 kde 什么意思,看不懂
|
10
necomancer 2022-07-19 11:08:43 +08:00 1
@LeeReamond kernal density estimation ,你就简单理解是和 histogram 差不多的东西就行。我看你引用的帖子里是颜色分布,分布一般用 histogram 直方图,binsize 不一样结果差异很大。kde 也是用来求解分布的,只是他用一个核函数,histogram 可以粗略一点理解是用一个宽度是 binsize 的方波函数当 kernel ,kde 一般用 gauss 当核函数,相比 histogram 求出的分布本身就会更加的连续和平滑,bw 可以理解为 kernel 函数的“binsize”,具体你可以参考一下 scipy 的 gaussian_kde ,一般默认参数的输出结果就会很好。
|