使用矩阵中的值为数组编制索引,Matlab
我想使用矩阵中的值来索引数组。我将在示例中使用3x2矩阵,但它可以是实际代码中任何高度的矩阵。在本例中,阵列为5x5,但可以是任意大小的方形阵列。数组的大小和矩阵的高度没有关系 这是我的密码使用矩阵中的值为数组编制索引,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
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这是一个轻微的变化,我已经回答了这个问题,你仍然建议我删除它吗?我最终更喜欢这个问题的表述方式,而不是潜在的“原始”。因此,经过再三考虑,我建议对这一条进行表决,并将其作为参考。