【问题标题】:Insert an identity matrix into a larger dimension of null matrix将单位矩阵插入更大维度的空矩阵
【发布时间】:2014-09-07 11:09:31
【问题描述】:

假设我有一个单位矩阵。

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]

我怎样才能有效地做到这一点。提前谢谢

【问题讨论】:

  • 带IP工具箱-padarray(I,[2 2],'pre')

标签: matlab matrix sparse-matrix


【解决方案1】:

使用图像处理工具箱,这可以使用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))

【讨论】:

  • @Robert P,非常感谢先生。您的解释对像我这样的初学者非常有帮助。祝你有美好的一天!
【解决方案2】:

或者,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多