Matlab将Diagonal延伸为一个

时间:2012-10-16 17:55:23

标签: matlab

假设我有一个矩阵A,我想得到矩阵[A 0; 0 1]。是否有建立功能来执行此操作?

因此,如果我的矩阵为[2 3; 1 4],我会回来[2 3 0; 1 4 0; 0 0 1]

2 个答案:

答案 0 :(得分:6)

最简单的方法是:

newA = A;

newA(end+1,end+1) = 1;

这是有效的,因为您可以在数组外部进行索引索引,因为end表示最后一个元素(此处为行和列),并且因为当您生成数组时,Matlab会使用零填充。如果您只想增长A,您甚至可以跳过newA的创建。

答案 1 :(得分:1)

我总是使用矩阵连接来解决这个问题

所以对你的例子来说:

A = [2 3; 1 4]
A = [A A(:,1)*0; A(1,:)*0 1]

产生

A =

     2     3     0
     1     4     0
     0     0     1

关于这个技巧的好处是它非常灵活,你可以进行各种转换 非常简单地。例如

A = [2 3; 1 4]
A = [1 A(1,:)*0; A(:,1)*0 A]

产生

A =

     1     0     0
     0     2     3
     0     1     4