如何通过添加零来调整/扩展矩阵的大小?

3

如何将一个二次方矩阵(例如NxN)扩展为更大的矩阵,比如(N+k)x(N+k)矩阵?

关键在于调整矩阵大小,并用零来填充缺失的行/列,以避免尺寸不匹配。

2个回答

9
不需要把它弄得比实际情况更困难。如果您将某些内容分配给原始大小外的元素,MATLAB会自动填充零:
n = 4;
A = [1 2; 3 4];
A(n,n) = 0;
A =    
   1   2   0   0
   3   4   0   0
   0   0   0   0
   0   0   0   0

1
谢谢你的回答!但是我选择natans的答案,因为padarray()似乎提供了更多的功能。不过对于一个更简单但更小的解决方案还是点个赞 :) - Stefan Falk

7

您可以使用padarray将零添加到矩阵中...例如:

A = [1 2; 3 4];
B = padarray(A,[2 2],'post')

B =
 1     2     0     0
 3     4     0     0
 0     0     0     0
 0     0     0     0

或者,如果您没有图像处理工具箱,可以使用矩阵索引:
B = zeros(size(A)+k, class(A));
B(k:end-k+1,k:end-k+1) = A;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接