如何在matlab,octave中创建矩阵

How to create matrix in matlab, octave

我有像 V[5000,1] 这样的向量,其值在 1-10 范围内 如何得到矩阵 W[5000,10]

V[1]   W[1 0 0 0 0 0 0 0 0 0]
 [2]   W[0 1 0 0 0 0 0 0 0 0]
 [10]  W[0 0 0 0 0 0 0 0 0 1]
 [7]   W[0 0 0 0 0 0 1 0 0 0]
 ...    ...

它的类似 W 在向量 V 指示的列中有“1”

解决方案

您可以使用以下方法:

W = zeros(length(v),10);
W(sub2ind(size(W),1:length(v),v'))=1;

结果

v = [10,4,10,4,9]

W =
 0     0     0     0     0     0     0     0     0     1
 0     0     0     1     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     1
 0     0     0     1     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     1     0