假设我有一个矩阵A,我想得到矩阵[A 0; 0 1]
。是否有建立功能来执行此操作?
因此,如果我的矩阵为[2 3; 1 4]
,我会回来[2 3 0; 1 4 0; 0 0 1]
答案 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