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将其解释为选择和的每个可能组合,r并c为其赋值
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)