说我有一个矩阵
A = zeros(5, 5);
我希望批量修改一些元素,而不是使用for循环进行循环。例如,我希望将标记为pts_to_modify
的元素更改为1,其中
pts_to_modify=[[2 3]; [3 2]];
所以我希望A
成为
0 0 0 0 0
0 0 1 0 0
0 1 0 0 0
0 0 0 0 0
但是,当我这样做时
A(pts_to_modify(:, 1), pts_to_modify(:, 2)) = 1,
我得到了
A =
0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
我该如何正确地做到这一点?
答案 0 :(得分:5)
您可以使用sub2ind
:
>> ind = sub2ind(size(A), pts_to_modify(1,:), pts_to_modify(2,:))
ind =
12 8
>> A(ind) = 1
A =
0 0 0 0 0
0 0 1 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0