假设我有一个单位矩阵。
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]
我怎样才能有效地实现这一目标。谢谢你的推荐
答案 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)] );