[問題] 一段CODE的解釋

作者: forrester (none)   2014-12-29 07:43:50
小弟正在讀一段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的作用為何呢 特別是 _? 以及 最後的 & 分別想扮演的角色
感謝
作者: LPH66 (-6.2598534e+18f)   2014-12-29 07:51:00
簡答: 這是以函數為條件的 Pattern如果只是想知道它在做什麼的話, (...&) 那一段中間的 ...是一個純函式, 此 Pattern 即為代入此函式得 True 的所有值而 Position 即是找出所有符合後者 Pattern 的元素位置純函式可看 #1EiPGgzs, 簡而言之 # 是參數之所以這是簡答是因為 Pattern 是 Mathematica 運算的核心要詳解大概要好幾篇文....
作者: forrester (none)   2014-12-29 07:57:00
樓上前輩 太感謝了 我會搜尋有關PATTERN的知識
作者: LPH66 (-6.2598534e+18f)   2014-12-29 07:57:00
Position 的第三參數 {1} 則是指定要找第幾層的元素此例即為第一層深, 即它會去把 {1}, {4} 等等代入函式不指定則預設會有多深找多深
作者: forrester (none)   2014-12-29 08:00:00
再度感謝 MMA實在有點深奧 我還是比較適合MATLAB

Links booklink

Contact Us: admin [ a t ] ucptt.com