matlab - 创建零行和一个索引的矩阵

时间:2013-04-30 14:11:52

标签: matlab matrix

我有一个向量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

2 个答案:

答案 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)

基本上,眼睛被分配到矩阵的右列。