1

假设我有一个矩阵 A,我想得到矩阵[A 0; 0 1]。是否有内置功能可以做到这一点?

所以如果我的矩阵是[2 3; 1 4],我会回来[2 3 0; 1 4 0; 0 0 1]

4

2 回答 2

6

最简单的方法是:

newA = A;

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

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

于 2012-10-16T17:56:57.833 回答
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
于 2012-10-17T08:06:19.483 回答