(*產生100組,每組200個數字的隨機資料*)
temp=Sort[#]&/@RandomReal[{0,50Pi},{100,200}];
data=Map[{#,Sin[#]}&,temp,{2}]
(*畫出所有資料的序列圖*)
Graphics[Line[#]&/@Partition[#,2,1],Epilog->{Red,Point[#]},
Frame->True,ImageSize->1000]&/@data
(*第一組資料的圖形*)
Graphics[Line[#]&/@Partition[data[[1]],2,1],
Epilog->{Red,Point[data[[1]]]},Frame->True,ImageSize->1000]
(*先分析第一組,找出所有的相對低點。若該組資料的y值較上一組資料的y值小,*)
(*就歸為同一組。所以若長度為一則表示資料在遞增,故剔除。*)
low=Select[Split[data[[1]],#1[[2]]>#2[[2]]&],Length[#]>1&][[All,-1]]
(*同樣的方法可應用在相對高點*)
high=Select[Split[data[[1]],#1[[2]]<=#2[[2]]&],Length[#]>1&][[All,-1]]
(*輸出所有資料的相對高低點*)
datalow=Select[Split[data[[#]],#1[[2]]>#2[[2]]&],
Length[#]>1&][[All,-1]]&/@Range[Length@data]
datahigh=Select[Split[data[[#]],#1[[2]]<=#2[[2]]&],
Length[#]>1&][[All,-1]]&/@Range[Length@data]
Mathematica 教學 找出資料序列的所有相對高低點
由 戴忠淵 於 2012年11月6日星期二
上午6:40 發表
![作者 candy88257 (阿泰斯) 看板 Mathematica 標題 [問題] 在XY平面上的蛇行點找所有的最低值!? 時間 Mon Nov 5 22:36:00 2012 ─────────────────────────────────────── 如: 給定一連串X座標為連續的座標點:(1,1),(2,3),(3,5),(4,2),(5,3),(6,7),(7,2),(8,5),\ (9,6) 畫起來像是上下起伏的震動圖 請問如何很快速的在裡面找到所有的最低點? 如上面串列的所有最低點為: (4,2),(7,2) 應該是用If去設定,但是我弄不出來= = 懇求大師協助!!! 感謝!!](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Gt_PSB4NUZgjsMcbIyLsNU8bi92Sx1y77ggzIGGnURrHmZ7Ds-LUGHHPOYRSyG-6v6lJOWa91JXHG4Zq3lf-hpqj7KfVG4NMTOwpKt9iShQjjfEseafBCPII7Jw_gTEPli-XNEVakgM/s400/%25E8%259E%25A2%25E5%25B9%2595%25E5%25BF%25AB%25E7%2585%25A7+2012-11-06+%25E4%25B8%258A%25E5%258D%25886.35.16.png)
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~