MATLAB二维矩阵中批次分配的一个线性规划?

MATLAB二维矩阵中批次分配的一个线性规划?,matlab,Matlab,假设我有一个矩阵 A = zeros(5, 5); 我希望批量修改一些元素,而不是使用for循环进行循环。例如,我希望将标记为pts\u的元素更改为\u 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, 我明白了 如何正确执行此操作?您可以使用sub

假设我有一个矩阵

A = zeros(5, 5);
我希望批量修改一些元素,而不是使用for循环进行循环。例如,我希望将标记为
pts\u的元素更改为\u 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,
我明白了


如何正确执行此操作?

您可以使用
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


您可以使用
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