Matlab:使用列\行索引对分配给矩阵

ola*_*ndo 9 indexing matlab matrix variable-assignment

可能重复:
如何更改矩阵中多个点的值?

我有一个矩阵A和三个相同长度的向量r,保存要分配的行c的索引,保存要分配的列的索引,并v包含要分配的实际值.

我想得到的是A(r(i),c(i))==v(i)所有人i.但是这样做

A(r,c)=v;
Run Code Online (Sandbox Code Playgroud)

例如,不会产生正确的结果,因为matlab将其解释为选择和的每个可能组合,rc为其赋值

n=5;
A=zeros(n);
r=1:n;
c=1:n;

A(r,c)=1;
Run Code Online (Sandbox Code Playgroud)

产生一个矩阵,我想得到单位矩阵,因为我想要A(r(i),c(i))==1的每一个i,只有对角线上的元素才会受到影响.

如何在没有for循环的情况下实现所需的结果?

ola*_*ndo 16

好的,我找到了答案 - 需要使用线性索引,即将列\行对转换为单个索引:

idx = sub2ind(size(A), r,c);
A(idx)=v;
Run Code Online (Sandbox Code Playgroud)