2

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

2 回答 2

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)
于 2013-04-30T14:14:30.023 回答
1

这是我的第一个想法:

a = [1;6;8];
nCols = 10;
nRows = length(a); 
M = zeros(nRows,nCols);

M(:,a) = eye(nRows)

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

于 2013-05-03T09:02:20.050 回答