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循环这可能吗?
当然,这就是他们发明稀疏矩阵的原因:
>> 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)