我想使用矩阵中的值来索引数组。我将在示例中使用 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 并在该位置的值上加一。
我试过下面的代码
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
这不是我需要的。我尝试过其他没有运气的方法,我想我可以使用 aloop
或创建一个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