如何按行增加矩阵大小
How to Increase matrix size by rows
要增加矩阵行。允许行重复,行顺序不是强制性的,而是预期的。新的行大小可能会或可能不会被原始行大小整除。
A=[1 2 3; 4 5 6; 7 8 9]
B=resize(A,9,3)
这将增加到行大小 9 和 11(两个不同的输出)。列大小保持不变。
这看起来像你想要的东西吗?
A=[1 2 3; 4 5 6; 7 8 9];
pad = zeros(6,3);
B= [A; pad]
如果输出必须是zero-padded,你可以只索引目标矩阵的bottom-right角并赋值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,:) = [];
我能想到的最后一个选择需要更多的手动工作(对于 copy-over)。例如,假设您希望目标矩阵再次为 zero-padded,则:
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;
用ones
或NaN
替换zeros
将分别return一个one-padded或NaN-padded矩阵。
要增加矩阵行。允许行重复,行顺序不是强制性的,而是预期的。新的行大小可能会或可能不会被原始行大小整除。
A=[1 2 3; 4 5 6; 7 8 9]
B=resize(A,9,3)
这将增加到行大小 9 和 11(两个不同的输出)。列大小保持不变。
这看起来像你想要的东西吗?
A=[1 2 3; 4 5 6; 7 8 9];
pad = zeros(6,3);
B= [A; pad]
如果输出必须是zero-padded,你可以只索引目标矩阵的bottom-right角并赋值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,:) = [];
我能想到的最后一个选择需要更多的手动工作(对于 copy-over)。例如,假设您希望目标矩阵再次为 zero-padded,则:
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;
用ones
或NaN
替换zeros
将分别return一个one-padded或NaN-padded矩阵。