我有一个向量a = [1; 6; 8]
并希望创建一个包含n
列和size(a,1)
行的矩阵。
每一行都是零,但a(i)
索引是一行。
>> make_the_matrix(a, 10)
ans =
1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0
答案 0 :(得分:7)
使用sparse
numCol = 10; % number of colums in output matrix, should not be greater than max(a)
mat = sparse( 1:numel(a), a, 1, numel(a), numCol );
如果你想要一个完整的矩阵,只需使用
full(mat)
答案 1 :(得分:1)
这是我的第一个想法:
a = [1;6;8];
nCols = 10;
nRows = length(a);
M = zeros(nRows,nCols);
M(:,a) = eye(nRows)
基本上,眼睛被分配到矩阵的右列。