※ 引述《abcd28s (乖小孩)》之銘言:
: 魯蛇小弟我想請問一個卡了很久的問題
: 大致上就是我用lostlogplot畫了我的一個table
: 然後想要在這張圖片裡面找很多個local maxima
: 最好不只找到還可以連線並找到fit的函數XD
: 以下是我的程式碼
: Ta0 = Table[{k, n}, {k, ki, kf, dk}];
: 以上是我建立的table
: lllp0 = ListLogPlot[Ta0, PlotStyle -> Red]
: 然後我將我的table用listlogplot做圖如下
:
![]()
: 然後現在我想要找每個凸凸的local maxima
: 想要找到每個peak的座標
: 當然能夠有可以fitting的函數更好
: 試過了一些FindMaximum,Fit,Findfit
: 似乎有找到一些像是FindPeaks的指令(網路上)
: 但是我的是Mathematica7似乎沒有這個指令QQ
: 請教大大們惹
(* test data *)
randomwalk=MapIndexed[{#2[[1]],#1+50}&,
Accumulate@RandomChoice[{-1,1},100]];
data=randomwalk;
ListLinePlot[data,Joined->True,AspectRatio->0.25,ImageSize->750]
(* local maximum *)
hpeaks[data_]:=Select[Split[data,#1[[2]]<=#2[[2]]&],Length[#]>1&][[All,-1]];
(* local minimum *)
lpeaks[data_]:=Select[Split[data,#1[[2]]>#2[[2]]&],Length[#]>1&][[All,-1]];
Show[ListLinePlot[data,Joined->True,AspectRatio->0.25,ImageSize->750,
Epilog->{Red,Point@hpeaks[data],Green,Point@lpeaks[data]}],
(* data fitting *)
Plot[Interpolation[data][x],
{x,Min@data[[All,1]],Max@data[[All,1]]},PlotStyle->Pink]]