使用矩阵中的值为数组编制索引,Matlab

使用矩阵中的值为数组编制索引,Matlab,matlab,vector,indexing,Matlab,Vector,Indexing,我想使用矩阵中的值来索引数组。我将在示例中使用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

我想使用矩阵中的值来索引数组。我将在示例中使用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,14,3和1,4,并在该位置的值中添加一个

我尝试了以下代码

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
这不是我所需要的。 我尝试过其他方法,但运气不好,我想我可以使用
循环
或创建
平面
数组,但我真的不想,我认为一定有更有效的方法

有人有什么想法吗?我正在使用Matlab2012b

一如既往地感谢您的时间和您能给予的任何帮助

编辑-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
用奥列格指给我的答案。通过将下标转换为线性索引,我成功地解决了我的问题:

pos       = sub2ind(size(Grid), X(:,1), X(:,2)); 
Grid(pos) = 1;

或者是的,它看起来是一个轻微的变化,谢谢@OlegKomarov@user2519890如果是这样的话,你可以删除这个问题。@Shai这是一个轻微的变化,我已经回答了这个问题,你仍然建议我删除它吗?我最终更喜欢这个问题的表述方式,而不是潜在的“原始”。因此,经过再三考虑,我建议对这一条进行表决,并将其作为参考。