2012年12月11日 星期二

(Sakar) Re: [請益] 尋找數列中的 peaks

作者: chungyuandye (養花種魚數月亮賞星星)
標題: Re: [請益] 尋找數列中的 peaks
時間: Wed Nov 28 12:50:43 2012

※ 引述《Sakar (紗卡)》之銘言:
: 我有一組光譜圖對應的data要用Mathematica處理。
: 因為先前沒有相關經驗,所以還不確定自己這樣做行不行?
: 目前的想法是先找出明顯的peak位置,但peak有好幾個,
: 有相關指令可以一下子找出所有的peak嗎?
: 寫個小程式比較data數列的前後點,也就是尋找
: x_i > x_i-1 && x_i > x_i+1
: 滿足這種條件的點。
: 有相關指令可以直接完成嗎?
: 不然只好去寫個小程式一一讀值比較了。
: 謝謝

mypeak[data_List]:=Block[{temp,high,low},
temp=If[Length[data[[1]]]>=2,data,MapIndexed[{First@#2,#1}&,data]];
high=Select[Split[temp,#2[[2]]>#1[[2]]&],Length[#]>1&][[All,-1]];
low=Select[Split[temp,#2[[2]]<#1[[2]]&],Length[#]>1&][[All,-1]];
{high,low,
ListLinePlot[temp,Frame->True,
Epilog->{PointSize[0.01],Black,Point@low,Red,Point@high}]}
]

data = MapIndexed[{First@#2, #1} &,
Accumulate[RandomReal[{-1, 1}, 100]]];

(* 相對高點, 相對低點, 圖形 *)

mypeak[data]


--
養花種魚數月亮賞星星

http://chungyuandye.twbbs.org


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.128.143

沒有留言:

張貼留言