2013-04-29 144 views
0

MATLAB串联矢量可以说,我已经得到了向量1:不等尺寸

2 
3 
5 
6 
7 
9 

并有vector2:

1 
2 
3 

现在我想获得以下矩阵:

2 1 
3 2 
5 3 
6 1 
7 2 
9 3 

也就是说,我想添加vector2作为vector1旁边的列,直到新列被完全填充。我必须用大量不同大小的载体来做到这一点。我事先知道的唯一事情是vector1的长度是vector2长度的整数倍。

有什么建议吗?

+0

我可以发誓,有这种重复,但我无法找到它。并且该解决方案使用'bsxfun'来复制比'repmat'更快的第二个向量。 – 2013-04-29 18:11:33

回答

2

使用repmat复制较小的矩阵。

a = [2 3 5 6 7 9]'; 
b = [1 2 3]'; 
c = [a repmat(b, length(a)/length(b), 1)] 

结果:

c = 

    2  1 
    3  2 
    5  3 
    6  1 
    7  2 
    9  3 
+0

小备注:只有当'length(a)/ length(b)'是一个整数时才能使用。 – Oleg 2013-04-29 18:13:22

+0

@OlegKomarov不只是一个整数,而是'b'复制的长度(a)/长度(b)'必须有一个大小,可以用'a'来表示'horzcat' – Praetorian 2013-04-29 18:18:29

0

然后,您可以复制的载体:

[vector1, repmat(vector2,n,1)] 

其中n是您的vector2多。

0

这可能是一种替代

[x [y'; y']]