2015-05-19 20 views
0

我想知道從數據文件中找到本地極值的簡單實現。awk腳本從2 clomun數據中查找當地最小值和局部最大值

具體地說,

我的輸入數據爲:

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

您的圖片不重視;請重新附上! – Will

回答

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 
+0

它的工作原理!謝謝! 你能解釋一下這段代碼嗎?它看起來像我這樣的初學者的密碼.. 還有一個問題是我怎麼可以添加一些代碼來找到上述代碼找到的局部極值之間的全球最小/最大值。 – user4914499