2012-09-02 66 views
0

我有兩個向量(比如X和Y),它們對應於行和列的編號。我想寫一個函數(一個動詞,在j編程中),它將這些函數分配給一個n×n零矩陣。這是一個簡單的例子。函數來分配矩陣中的值(j編程)

我有這些載體:

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

和零矩陣:

mat=: 10 10$0 

和我寫下面的函數(I用拳擊):

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

但問題是否需要這些向量併爲每列分配1。因此,如果我採用(1,0),它將1分配給所有列中的第1行和第0行(如Matlab(1,:)中的這樣)。我怎麼能克服這個問題?

回答

4

我知道你想修改一個布爾型名詞來把1放在指定的座標上。您將座標對作爲單獨的列表開始。我建議拼接這些名單一起這樣的:因爲以J軸自然排列遞減順序

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

Ÿ談到十大之前將這些作爲協調與對(也就是最細粒度的權利。)修改,他們將需要裝箱:

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

那些將與修訂工作,在這些特定的座標設定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 

如果我明白你的問題,這個我你正在尋找的矩陣。

+0

是的,這就是我想要的..謝謝一堆 – pasha

+1

@pasha如果這是你的問題的正確答案,請將其標記爲已回答(綠色勾號)。這樣其他用戶也可以從中獲利。謝謝。 – jpjacobs