是否有更好的方法将值分配给矩阵

时间:2014-11-12 23:24:39

标签: matlab

说我有一个矩阵

A=zeros(10,3);

和矢量

ll=[1 1 1  2 2 2 3 1 3 2]';

我希望将与该行的ll值对应的每一行中的值分配为1

即输出

A= 1 0 0
   1 0 0
   1 0 0
   0 1 0
   0 1 0
   0 1 0
   0 0 1
   1 0 0
   0 0 1
   0 1 0

我是怎么做的就是使用for循环

for ii=1:length(ll)
   A(ii,ll(ii)=1;
end

2 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

ll=[1 1 1  2 2 2 3 1 3 2]';
A=bsxfun(@eq,ll,1:max(ll))

我使用bsxfun检查ll的条目何时等于行向量[1 2 3]的元素(在本例中)。如果ll的条目为1,则它将等于[1 2 3]向量的第一列中的条目,并且会在A的第一列中为1,并且那一行的其余部分。

答案 1 :(得分:0)

只需转换为linear index

A((ll-1)*size(A,1) + (1:size(A,1)).') = 1;