MATLAB 1个衬板,用于在2D矩阵中进行批处理分配? [英] MATLAB one liner for batch assignment in 2D matrix?

查看:62
本文介绍了MATLAB 1个衬板,用于在2D矩阵中进行批处理分配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我有一个矩阵

A = zeros(5, 5);

我希望对某些元素进行批量修改,而不是使用for循环进行循环.例如,我希望将pts_to_modify标记的元素更改为1,其中

Instead of looping with a for loop, I wish to batch-modify some of the elements. For example, I wish to change elements marked by pts_to_modify to 1, where

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

我该如何正确做?

推荐答案

您可以使用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
线性索引

这篇关于MATLAB 1个衬板,用于在2D矩阵中进行批处理分配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆