不相似矩阵通过附加函数的几个输出

时间:2017-10-24 02:08:08

标签: j

v=: ((1 2);(3 4);(0 5);(2 1))
diff=: ([{]) ,. ]
direction_vector=: <"1 @: (-"0 @:(-/"2 @: (>"0 @: (diff))))
distance=: +/"1 @: *: @: (>"2 @:(direction_vector))

我想得到一个看起来像

的相异矩阵
(0 distance v),. (1 distance v),. (2 distance v) ,. (3 distance v)

我试过

i.4 distance v

给了我一个索引错误

任何人都可以帮我这个吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

你很接近,但你有两个问题要处理。一个是你想在应用距离之前完成i. 4的计算(这就是你得到索引错误的原因)。更改计算顺序的括号是解决此问题的方法。

   i. 4 distance v
|index error: diff
|   i.4     distance v
   (i. 4) distance v
0 0 0 0

第二个问题是,您希望将i.4的每个原子应用于整个v,并使用"(排名)来指定0左边参数的(atoms)和整个右边参数的_(无穷大)。

   (i. 4) distance"0 _ v
 0  8 10  2
 8  0 10 10
10 10  0 20
 2 10 20  0