用于从 2 列数据中查找局部最小值和局部最大值的 awk 脚本
awk script to find local minimum and local maximum from 2 clomun data
我想知道从数据文件中查找局部极值的简单实现。
具体来说,
我的输入数据是:
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)脚本,我们将不胜感激。
提前致谢。
一种方法是将前两个值行存储在两个变量中,并使用第三个变量来存储该行。所以你可以获得这样的局部最小值:
awk 'prev!=""&&prev<=prev2&&prev<={print line}{prev2=prev;prev=;line=[=10=]}' file
和像这样的局部最大值:
awk 'prev!=""&&prev>=prev2&&prev>={print line}{prev2=prev;prev=;line=[=11=]}' file
我想知道从数据文件中查找局部极值的简单实现。
具体来说,
我的输入数据是:
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)脚本,我们将不胜感激。
提前致谢。
一种方法是将前两个值行存储在两个变量中,并使用第三个变量来存储该行。所以你可以获得这样的局部最小值:
awk 'prev!=""&&prev<=prev2&&prev<={print line}{prev2=prev;prev=;line=[=10=]}' file
和像这样的局部最大值:
awk 'prev!=""&&prev>=prev2&&prev>={print line}{prev2=prev;prev=;line=[=11=]}' file