如何按行增加矩阵大小

时间:2018-02-23 17:07:44

标签: matlab resize reshape permute

要增加矩阵行。允许行重复,并且行序列不是强制性的,而是预期的。新行大小可能会或可能不会被原始行大小整除。

A=[1 2 3; 4 5 6; 7 8 9]
B=resize(A,9,3)

这将增加到行大小9和11(两个不同的输出)。列大小保持不变。

2 个答案:

答案 0 :(得分:2)

如果输出必须为零填充,则只需索引目标矩阵的右下角并为其指定值0。没有必要调用padarray ...... Matlab将自己处理其他所有事情:

A = [1 2 3; 4 5 6; 7 8 9];

B = A;
B(9,3) = 0;

C = A;
C(11,3) = 0;

如果你想通过重复执行此操作,可以使用repmat function,但它只能生成相对于原始矩阵的大小倍数...因此第二个目标需要更多的努力:

A = [1 2 3; 4 5 6; 7 8 9];

B = repmat(A,3,1);

C = repmat(A,4,1);
C = C(1:11,:);
% or C(12,:) = [];

我能想出的最后一个选择需要一些更多的手工工作(用于复制)。例如,假设您希望目标矩阵再次进行零填充,那么:

A = [1 2 3; 4 5 6; 7 8 9];
[A_rows,A_cols] = size(A);

B = zeros(9,3);
B(1:A_rows,1:A_cols) = A;

C = zeros(11,3);
C(1:A_rows,1:A_cols) = A;

zerosones替换NaN将分别返回单填充或NaN填充矩阵。

答案 1 :(得分:0)

这看起来像你想要的东西吗?

A=[1 2 3; 4 5 6; 7 8 9];
pad = zeros(6,3);
B= [A; pad]