[問題] 一段CODE的解釋

看板Mathematica作者 (none)時間10年前 (2014/12/29 07:43), 編輯推噓1(1011)
留言12則, 2人參與, 最新討論串1/1
小弟正在讀一段MATHEMATICA的CODE 想改寫到MATLAB 因為對MMA不熟 所以之後想用MATLAB處理這個問題4 其中有段CODE Position[{{1}, {4}, {6}, {6}, {7}, {10}}, _?(Intersection[{4, 6}, #] != {} &), {1}, Heads->False] OUTPUT結果是 {{2}, {3}, {4}} 這段CODE只是想比較兩個集合 並給出兩者交集的元素在第一個集合的位置 想請問的是 _?(Intersection[{4,6}, #] != {} &), {1} 這段CODE的作用為何呢 特別是 _? 以及 最後的 & 分別想扮演的角色 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 130.126.255.149 ※ 文章網址: http://www.ptt.cc/bbs/Mathematica/M.1419810232.A.F28.html

12/29 07:51, , 1F
簡答: 這是以函數為條件的 Pattern
12/29 07:51, 1F

12/29 07:52, , 2F
如果只是想知道它在做什麼的話, (...&) 那一段中間的 ...
12/29 07:52, 2F

12/29 07:53, , 3F
是一個純函式, 此 Pattern 即為代入此函式得 True 的所有值
12/29 07:53, 3F

12/29 07:53, , 4F
而 Position 即是找出所有符合後者 Pattern 的元素位置
12/29 07:53, 4F

12/29 07:55, , 5F
純函式可看 #1EiPGgzs, 簡而言之 # 是參數
12/29 07:55, 5F

12/29 07:55, , 6F
之所以這是簡答是因為 Pattern 是 Mathematica 運算的核心
12/29 07:55, 6F

12/29 07:56, , 7F
要詳解大概要好幾篇文....
12/29 07:56, 7F

12/29 07:57, , 8F
樓上前輩 太感謝了 我會搜尋有關PATTERN的知識
12/29 07:57, 8F

12/29 07:57, , 9F
Position 的第三參數 {1} 則是指定要找第幾層的元素
12/29 07:57, 9F

12/29 07:58, , 10F
此例即為第一層深, 即它會去把 {1}, {4} 等等代入函式
12/29 07:58, 10F

12/29 07:59, , 11F
不指定則預設會有多深找多深
12/29 07:59, 11F

12/29 08:00, , 12F
再度感謝 MMA實在有點深奧 我還是比較適合MATLAB
12/29 08:00, 12F
文章代碼(AID): #1Ke9Muye (Mathematica)
文章代碼(AID): #1Ke9Muye (Mathematica)