从m个大小的列索引向量创建m×n矩阵0和1

usr*_*usr 6 matlab matrix octave

我有一个从1到n的整数m维向量.这些整数是m×n矩阵的列索引.

我想要创建一个0和1 的m×n矩阵,其中在第m行中,列中的1是由向量中的第m个值指定的.

例:

% my vector (3-dimensional, values from 1 to 4):
v = [4;
     1;
     2];

% corresponding 3 × 4 matrix
M = [0 0 0 1;
     1 0 0 0;
     0 1 0 0];
Run Code Online (Sandbox Code Playgroud)

没有for循环这可能吗?

Gun*_*uyf 4

当然,这就是他们发明稀疏矩阵的原因:

>> M = sparse(1:length(v),v,ones(length(v),1))
M =

   (2,1)        1
   (3,2)        1
   (1,4)        1
Run Code Online (Sandbox Code Playgroud)

如果您想要使用full,您可以将其转换为完整矩阵:

>> full(M)
ans =

     0     0     0     1
     1     0     0     0
     0     1     0     0
Run Code Online (Sandbox Code Playgroud)