通过附加函数的多个输出来得到相异矩阵
Dissimilarity Matrix by appending several outputs from a function
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
这给了我一个索引错误
任何人都可以帮助我吗?
谢谢!
你很接近,但你有两个问题要处理。一个是你想在应用距离之前完成 i. 4
的计算(这就是你得到索引错误的原因)。括号改变计算顺序是解决这个问题的方法。
i. 4 distance v
|index error: diff
| i.4 distance v
(i. 4) distance v
0 0 0 0
第二个问题是您想将 i.4
的每个原子应用到整个 v
并且您通过使用 "
(等级)来指定 [=16] =](原子)用于左侧参数,_
(无穷大)用于整个右侧参数。
(i. 4) distance"0 _ v
0 8 10 2
8 0 10 10
10 10 0 20
2 10 20 0
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
这给了我一个索引错误
任何人都可以帮助我吗?
谢谢!
你很接近,但你有两个问题要处理。一个是你想在应用距离之前完成 i. 4
的计算(这就是你得到索引错误的原因)。括号改变计算顺序是解决这个问题的方法。
i. 4 distance v
|index error: diff
| i.4 distance v
(i. 4) distance v
0 0 0 0
第二个问题是您想将 i.4
的每个原子应用到整个 v
并且您通过使用 "
(等级)来指定 [=16] =](原子)用于左侧参数,_
(无穷大)用于整个右侧参数。
(i. 4) distance"0 _ v
0 8 10 2
8 0 10 10
10 10 0 20
2 10 20 0