说我有一个矩阵
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
答案 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;