Re: [問題] 在XY平面上的蛇行點找所有的最低值!?

看板Mathematica作者 (養花種魚數月亮賞星星)時間12年前 (2012/11/06 00:35), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《candy88257 (阿泰斯)》之銘言: : 標題: [問題] 在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) : PS. : 不要用畫圖的去判斷 : 因為我目前要判斷的點都是好幾百個一組... : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 175.181.151.43 : 推 jurian0101:If用法有誤,你要多看範例文件熟悉MM的語法了。 11/05 22:44 : → candy88257:意思是可以用If寫出來!? 11/05 23:00 : → candy88257:感謝指導! 11/05 23:00 : → chungyuandye:SplitBy[SortBy[data,Last],Last] 11/05 23:04 : → chungyuandye:SplitBy[SortBy[data, Last], Last][[1]] 少打[[1]] 11/05 23:04 如果要找全域極小,又不考慮第一組資料,那下列語法就可以 SplitBy[SortBy[data[[2;;-1]], Last], Last][[1]] : → candy88257:我想找到所有的最低點...就像上面例子最後抓到2個最低 11/05 23:31 : → candy88257:也就是所有點按X順序在XY平面連起來,找到所有的最低點 11/05 23:32 : → candy88257:其實不能講最低點,應該是相對低點 11/05 23:37 如果要找相對高低點,那Split這個函數可發揮妙用 (* 產生100組,每組200個數字的隨機資料 *) temp = Sort[#] & /@ RandomReal[{0, 50 Pi}, {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] -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: chungyuandye 來自: 218.173.133.152 (11/06 00:48)

11/07 16:36, , 1F
我再研究一下,感謝!!
11/07 16:36, 1F
文章代碼(AID): #1Gb-gz-U (Mathematica)
文章代碼(AID): #1Gb-gz-U (Mathematica)