我有一个带有N个元素的向量,所有整数都是1-M.我想将其转换为NxM矩阵,每行只包含零,除了i:th元素设置为1,i是向量中的整数.
例如:[1 1 3] => [1 0 0; 1 0 0; 0 0 1]
我目前在循环中执行此操作,如下所示:
y_vec = zeros(m, num_labels);
for i = 1:m
y_vec(i, y(i)) = 1;
end
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有循环的情况下做到这一点?
Jon*_*nas 13
就在这里:
y = [1 1 3];
m = length(y);
num_labels = max(y);
%# initialize y_vec
y_vec = zeros(m,num_labels);
%# create a linear index from {row,y}
idx = sub2ind(size(y_vec),1:m,y);
%# set the proper elements of y_vec to 1
y_vec(idx) = 1;
Run Code Online (Sandbox Code Playgroud)
如果您可以访问Statistics Toolbox,则命令就是dummyvar这样做的.
>> dummyvar([1 1 3])
ans =
1 0 0
1 0 0
0 0 1
Run Code Online (Sandbox Code Playgroud)