awk脚本从2 clomun数据中找到本地最小和局部最大值

时间:2015-05-19 04:20:31

标签: awk max min derivative

我想知道从数据文件中查找本地极端的简单实现。

具体说,

我的输入数据是:

 x       y
 163.858 14.0919
 166.269 14.2113
 168.688 14.2855  # local max.
 171.109 14.2766
 173.524 14.1439
 178.353 13.7528  
 180.768 13.6166
 183.189 13.5753 # local min.
 185.61 13.6128
 188.03 13.6525
 190.454 13.776
 195.281 14.1291
 197.698 14.1603 # local max.
 200.119 14.1161

有3个极端(局部最大值2个,局部最小值1个),如附图所示。 ![在此输入图像说明] [1]

如果他们教我输出本地极端的awk(或shell)脚本,任何人都会受到赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:1)

一种方法是将前两个值行存储在两个变量中,并使用第三个变量来存储该行。所以你可以得到这样的局部最小值:

awk 'prev!=""&&prev<=prev2&&prev<=$2{print line}{prev2=prev;prev=$2;line=$0}' file

和这样的局部最大值:

awk 'prev!=""&&prev>=prev2&&prev>=$2{print line}{prev2=prev;prev=$2;line=$0}' file