根据向量用 1 填充矩阵
Filling matrix with ones depending on vector
在 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;
假设:
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));
您也可以像这样索引到单位矩阵。
a = [ 1 2 3 1 2 3];
I = eye(max(a));
m = I(a, :);
在 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;
假设:
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));
您也可以像这样索引到单位矩阵。
a = [ 1 2 3 1 2 3];
I = eye(max(a));
m = I(a, :);