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

Matlab:使用列\行索引对分配给矩阵,matlab,indexing,matrix,variable-assignment,Matlab,Indexing,Matrix,Variable Assignment,可能重复: 我有一个矩阵a和三个长度相同的向量,r,保存要分配的行的索引,c,保存要分配的列的索引,以及包含要分配的实际值的v 对于所有的I,我想要得到的是A(r(I),c(I))==v(I)。但是做 A(r,c)=v; 不会产生正确的结果,因为matlab将其解释为选择r和c的所有可能组合,并为其赋值 n=5; A=zeros(n); r=1:n; c=1:n; A(r,c)=1; 产生一个1的矩阵,其中我想得到单位矩阵,因为我希望a(r(I),c(I))==1,对于每个I,只有对角线

可能重复:

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

对于所有的
I
,我想要得到的是
A(r(I),c(I))==v(I)
。但是做

A(r,c)=v;
不会产生正确的结果,因为matlab将其解释为选择
r
c
的所有可能组合,并为其赋值

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

A(r,c)=1;
产生一个1的矩阵,其中我想得到单位矩阵,因为我希望
a(r(I),c(I))==1,对于每个
I
,只有对角线上的元素应该受到影响


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

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

idx = sub2ind(size(A), r,c);
A(idx)=v;

类似问题:@Amro-虽然我同意两个问题的答案非常相似,但问题不同-我想知道如何分配矩阵,而另一个问题想知道如何将矩阵转换为向量。在寻找我的问题的答案时,一个问题不会涉及到另一个问题。我没有投你的反对票,我只是将另一个问题链接为类似的问题(而不是投票以重复方式结束)…可能的重复