在Mathematica中将EuclideanDistance应用于一定水平

时间:2011-09-07 12:58:39

标签: wolfram-mathematica euclidean-distance

请考虑:

daList = {{{21, 18}, {20, 18}, {18, 17}, {20, 15}}, 
          {{21, 18}, {20, 18}, {21, 14}, {21, 14}}};

我想计算该列表的2个子列表中每个点之间的距离:

然而,我需要使用Function来应用正确的级别:

Function[seqNo, 
         EuclideanDistance[#, {0, 0}] & /@ daList[[seqNo]]] /@ 
         Range[Length@daList]

out = {{3 Sqrt[85], 2 Sqrt[181], Sqrt[613], 25}, {3 Sqrt[85], 2 Sqrt[181], 
        7 Sqrt[13], 7 Sqrt[13]}}

有没有办法在那里避免这种沉重的功能? 使用seqNo作为参数指定避免我的函数的级别? :

EuclideanDistance[#, {0, 0}] & /@ daList

out={EuclideanDistance[{{21, 18}, {20, 18}, {18, 17}, {20, 15}}, {0, 0}], 
     EuclideanDistance[{{21, 18}, {20, 18}, {21, 14}, {21, 14}}, {0, 0}]}

2 个答案:

答案 0 :(得分:6)

您是否尝试过Map中的Level规范?

Map[EuclideanDistance[#, {0, 0}] &, daList, {2}]

给出

{{3 Sqrt[85],2 Sqrt[181],Sqrt[613],25},{3 Sqrt[85],2 Sqrt[181],7 Sqrt[13],7 Sqrt[13]}}

答案 1 :(得分:6)