我有一个向量a = [1; 6; 8]
并想创建一个包含n
列和size(a,1)
行的矩阵。
每个第 i 行都是零,但在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
利用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)
这是我的第一个想法:
a = [1;6;8];
nCols = 10;
nRows = length(a);
M = zeros(nRows,nCols);
M(:,a) = eye(nRows)
基本上眼睛被分配到矩阵的右列。