【发布时间】:2018-08-03 19:25:41
【问题描述】:
矩阵行要增加。允许行重复,并且行顺序不是强制性的,而是预期的。新的行大小可能会也可能不会被原始行大小整除。
A=[1 2 3; 4 5 6; 7 8 9]
B=resize(A,9,3)
这将增加到 9 和 11 的行大小(两个不同的输出)。列大小保持不变。
【问题讨论】:
标签: matlab resize reshape permute
矩阵行要增加。允许行重复,并且行顺序不是强制性的,而是预期的。新的行大小可能会也可能不会被原始行大小整除。
A=[1 2 3; 4 5 6; 7 8 9]
B=resize(A,9,3)
这将增加到 9 和 11 的行大小(两个不同的输出)。列大小保持不变。
【问题讨论】:
标签: matlab resize reshape permute
如果输出必须是零填充的,您只需索引目标矩阵的右下角并为其分配值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;
将zeros 替换为ones 或NaN 将分别返回一个单填充矩阵或一个NaN 填充矩阵。
【讨论】:
C = repmat(A,4,1); C(12,:) = []; 或者您选择所需的行,这可能更简单:C = repmat(A,4,1); C = C(1:11,:);。跨度>
这看起来像你想要的吗?
A=[1 2 3; 4 5 6; 7 8 9];
pad = zeros(6,3);
B= [A; pad]
【讨论】: