【问题标题】:awk script to find local minimum and local maximum from 2 clomun data用于从 2 列数据中查找局部最小值和局部最大值的 awk 脚本
【发布时间】:2015-05-19 15:48:27
【问题描述】:

我想知道从数据文件中查找局部极值的简单实现。

具体来说,

我的输入数据是:

 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 max min derivative


【解决方案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

【讨论】:

  • 有效!谢谢!你能解释一下代码吗?对于像我这样的初学者来说,它看起来像是密码。还有一个问题是我如何添加一些代码来在上面代码找到的局部极值中找到全局最小值/最大值。
猜你喜欢
  • 2021-09-12
  • 2023-01-05
  • 2018-04-25
相关资源
最近更新 更多