[问题] 一段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