在Octave中,我有一个带索引的向量,例如a = [ 1 2 3 1 2 3]
。我现在想要一个矩阵m = zeros(size(a,2), max(a))
来取决于向量a:
m =
[1 0 0
0 1 0
0 0 1
1 0 0
0 1 0
0 0 1]
我该怎么做?
我试过这个,但它没有用:m(a,:) = 1;
答案 0 :(得分:3)
假设:
a = [1 2 3 1 2 3];
sz = [numel(a), max(a)];
使用sub2ind
:
m = zeros(sz);
ind = sub2ind(sz, 1:sz(1), a);
m(ind) = 1;
使用sparse
m = full(sparse(1:sz(1), a, 1));
答案 1 :(得分:0)
你也可以索引到这样的单位矩阵。
a = [ 1 2 3 1 2 3];
I = eye(max(a));
m = I(a, :);