函数在矩阵中赋值(j-programming)

时间:2012-09-02 16:44:45

标签: vector boxing j

我有两个向量(比如X和Y),它们对应于行号和列号。我想写一个函数(一个动词,在j编程中),它接受这些并在n x n零矩阵中赋值1。这是一个简单的案例。

我有这些载体:

X=:1 2 1 5
Y=:0 3 3 9

和零矩阵:

mat=: 10 10$0 

我写了以下函数(我用拳击):

   1(|:(,./<"0(|:(X,:Y)))) } 10 10$0

但问题是它需要这些向量并为每列分配1。因此,如果我取(1,0)它将1分配给所有列中的行号1和0(如Matlab(1,:)中的这样)。我该如何克服这个问题呢?

1 个答案:

答案 0 :(得分:4)

我理解你想修改一个布尔名词,把1放在指定的坐标上。您可以将坐标对作为单独的列表开始。我建议像这样将这些列表拼接在一起:

   Y,.X
0 1
3 2
3 1
9 5

Y在X之前出现,因为J轴自然按顺序排列(即,最右边的细粒度)。要将这些作为Amend的坐标对使用,它们需要加框:

   <"1 Y,.X
+---+---+---+---+
|0 1|3 2|3 1|9 5|
+---+---+---+---+

这些将与Amend一起使用,在这些特定坐标处设置1,所以:

   1 (<"1 Y,.X)} 10 10$0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0

如果我理解了你的问题,那就是你想要制作的矩阵。