可能重复:如何更改矩阵中多个点的值?
我有一个矩阵 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;
产生一个矩阵,其中我想得到单位矩阵,因为我想 A(r(i),c(i))==1
为每个 i
,这只是对角线上的元素应该受到影响 .
如果没有 for
循环,我怎样才能达到预期的效果?
1 回答
好的,我找到了答案 - 需要使用线性索引,即将列\行对转换为单个索引: