我怎么能避免for循环在这种情况下?
1视图(30天)
显示旧的评论
a_matrix = 0 (10、4);
= [3 6 7 8]';
为i = 1:元素个数(a)
a_matrix((我),我)= 1;
结束
disp (a_matrix)
0 0 0 0
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0
0评论
接受的答案
Stephen23
2020年5月12日
编辑:Stephen23
2020年5月12日
方法一:逻辑等于:
> > = (3、6、7、8);
> > V = 1:10;
双(V (:) > > M = = =)%需要MATLAB > = R2016b
M =
0 0 0 0
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0
早些时候,MATLAB版本替换
= =
与
bsxfun
。
方法二:
sub2ind
:
> > M = 0 (10、4);
> > X = sub2ind(大小(M)、一个1:4);
> > M (X) = 1
M =
0 0 0 0
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0