Matlab - 通过多次合并相同的原始矢量来构建矩阵

时间:2011-07-31 12:07:25

标签: 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]

2 个答案:

答案 0 :(得分:12)

您正在寻找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))

答案 1 :(得分:0)

您可以尝试使用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