Matlab:分配给具有列\行索引对的矩阵[重复]
Posted
技术标签:
【中文标题】Matlab:分配给具有列\\行索引对的矩阵[重复]【英文标题】:Matlab: assign to matrix with column\row index pairs [duplicate]Matlab:分配给具有列\行索引对的矩阵[重复] 【发布时间】:2011-10-30 11:31:11 【问题描述】:可能重复:How can I change the values of multiple points in a matrix?
我有一个矩阵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;
产生一个矩阵,我想在其中获得单位矩阵,因为我想要每个 i
的 A(r(i),c(i))==1
,即只有对角线上的元素应该受到影响。
如何在没有for
循环的情况下达到预期的效果?
【问题讨论】:
类似问题:Converting a matlab matrix to a vector @Amro - 虽然我同意这两个问题的答案非常相似,但问题是不同的 - 我想知道如何分配给矩阵,而另一个问题想知道如何隐藏矩阵转化为向量。在寻找我的问题的答案时,一个人不会到达另一个问题。 我没有对你投反对票,我只是将另一个问题链接为相似(而不是投票关闭为重复).. How can I change the values of multiple points in a matrix?的可能重复 【参考方案1】:好的,我找到了答案 - 需要使用线性索引,即将列\行对转换为单个索引:
idx = sub2ind(size(A), r,c);
A(idx)=v;
【讨论】:
以上是关于Matlab:分配给具有列\行索引对的矩阵[重复]的主要内容,如果未能解决你的问题,请参考以下文章