将单位矩阵插入较大的空矩阵维

时间:2014-09-07 11:09:32

标签: matlab matrix sparse-matrix

假设我有一个单位矩阵。

I=eye(3)

将产生

I = [1 0 0
       0 1 0
       0 0 1]

现在我想将I插入到(5X5)空矩阵中,这样我的结果将是

N = [0 0 0 0 0 
     0 0 0 0 0 
     0 0 1 0 0
     0 0 0 1 0
     0 0 0 0 1]

我怎样才能有效地实现这一目标。谢谢你的推荐

2 个答案:

答案 0 :(得分:3)

使用图像处理工具箱,可以使用padarray完成此操作:

padarray(eye(3), [2 2], 'pre');

padarray用零填充数组。 [2 2]部分表示要填充多少个零,在本例中为2行和2列。 pre表示您希望它位于矩阵之前,而不是之后(post)。

没有它,你需要再调整一下。一种选择可以是创建完整大小的单位矩阵,然后将第一个元素设为零:

m = 5;  %// size of matrix
n = 3;  %// size of identity matrix
a = eye(m);
a(1:m-n,1:m-n) = 0;
a =
     0     0     0     0     0
     0     0     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

......或:

a = zeros(m);
a(m-n+1:m,m-n+1:m) = eye(n)

...或使用sparse

full(sparse(m-n+1:m,m-n+1:m,1))

答案 1 :(得分:2)

可替换地,

m = 5;
n = 3;
a = diag( [zeros(1, m-n), ones(1,n)] );