1

行列の値を使用して配列のインデックスを作成したいと考えています。この例では 3x2 マトリックスを使用しますが、実際のコードでは任意の高さのマトリックスにすることができます。この例では配列は 5x5 ですが、任意のサイズの正方配列にすることができます。配列のサイズと行列の高さには関係がありません。

これが私のコードです

X =

     2     1
     4     3
     1     4

Grid=zeros(5,5)

Grid =

     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

したがって、ポイント 2,1 4,3 および 1,4 にアクセスし、その場所の値に 1 を追加したいと思います。

次のコードを試しました

Grid(X(:,1),X(:,2))=Grid(X(:,1),X(:,2))+1

これにより、この結果が得られます

Grid =

     1     0     1     1     0
     1     0     1     1     0
     0     0     0     0     0
     1     0     1     1     0
     0     0     0     0     0

これは私が必要とするものではありません。他の方法を試してみましたが、うまくいきませんでしloopた。配列を使用または作成できるFLATと思いますが、実際にはそうしたくありません。もっと効率的な方法が必要だと思います。

誰にもアイデアはありますか?私はMatlab 2012bを使用しています。

いつもありがとうございます。

Edit-1 必要な結果

これは私が望む結果です

Grid =

     0     0     0     1     0
     1     0     0     0     0
     0     0     0     0     0
     0     0     1     0     0
     0     0     0     0     0

編集-2

座標マトリックスは重複した値を保持する可能性があるため、配列 (例ではグリッド) 内の相​​対位置の値で、この座標が何回発生するかを示したいと思います。だから私の解決策は

Grid(sub2ind(size(Grid),X(:,1),X(:,2)))=Grid(sub2ind(size(Grid),X(:,1),X(:,2)))+1
4

1 に答える 1