Stack flow中给出了其中一种答案,利用diff函数。但是对于不想找到
Finding local maxima and minima
但是,问题在于,有时候噪声信号太大,会产生一些 极值点的误判。
在《统计套利》一书中,提到了一种 定义极值点的方法:
( a[i] - a[wait.pos] ) / ( a[wait.pos] - a[last.pos]) >= threshold
其中 i为当前值,wait.pos为待判定的极值点, last.pos为已认定的极值点。threshold为阈值,即下降或者上升幅度至少为上一极值点落差的 百分之多少,比如20%
那么last.pos若为极大值,则wait.pos应该为极小值;反之亦然。
但是存在的问题是:
(1)对于单调上升或者下降趋势无法判定,这种情况也可以认为只有最大值和最小值,而没有极值点