0

行番号と列番号に対応する 2 つのベクトル (X と Y など) があります。これらを取り、anxn ゼロ行列に 1 を代入する関数 (j プログラミングでは動詞) を書きたいと思います。ここでは、単純なケースについて説明します。

私はこれらのベクトルを持っています:

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 と 0 に 1 が割り当てられます (Matlab (1,:) のように)。どうすればこの問題を克服できますか?

4

1 に答える 1

4

ブール名詞を修正して、指定された座標に1を配置することをお勧めします。個別のリストとして座標ペアから始めます。これらのリストを次のようにつなぎ合わせることをお勧めします。

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

J軸は自然に降順で配置されるため(つまり、右に最も細かく配置されるため)、YはXの前に来ます。これらを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

私があなたの質問を理解したなら、これはあなたが作成しようとしていたマトリックスです。

于 2012-09-04T04:20:17.240 に答える