【发布时间】:2011-10-16 21:23:00
【问题描述】:
是否有一个matlab函数可以让我做以下操作?
x = [1 2 2 3];
然后基于x我要构建矩阵m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]
【问题讨论】:
标签: matlab matrix rows repeat tiling
是否有一个matlab函数可以让我做以下操作?
x = [1 2 2 3];
然后基于x我要构建矩阵m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]
【问题讨论】:
标签: matlab matrix rows repeat tiling
您正在寻找REPMAT 函数:
x = [1 2 2 3];
m = repmat(x,4,1);
您也可以使用索引来重复行:
m = x(ones(4,1),:);
甚至是外积:
m = ones(4,1)*x;
并且还使用 BSXFUN:
m = bsxfun(@times, x, ones(4,1))
【讨论】:
m = [1 2 2 3; 2 4 4 6; 3 6 6 9]?
m = bsxfun(@times, x, (1:3)')
您可以尝试使用vertcat,如下所示:
x = [1 2 2 3];
m = vertcat(x,x,x,x);
甚至简单地说:
x = [1 2 2 3];
m = [x;x;x;x];
编辑:
对于 x 的倍数,您可以这样做:
x = [1 2 2 3];
m = [x;2*x;3*x]; % [1 2 2 3; 2 4 4 6; 3 6 6 9]
EDIT2:
对于 m 中任意数量的 x...
n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
m = [m;x];
end
【讨论】: