Re: [问题] listplot中想找多个local maxima

楼主: chungyuandye (养花种鱼数月亮赏星星)   2014-11-07 14:11:16
※ 引述《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]]
作者: abcd28s (乖小孩)   2014-11-09 16:53:00
感谢~~我研究了一个下午大概搞定了!!非常感谢喔~~

Links booklink

Contact Us: admin [ a t ] ucptt.com