以两个方向复制矢量的最快方法

时间:2014-11-11 10:54:58

标签: matlab vector

我有一个向量,我想在行和列方向上复制它的元素。我发现使用ones内置函数比m文件函数repmatkron更快。我已经看到了一些在一个方向上复制矢量的例子,但是我无法在两个方向上找到它。

考虑以下示例:

a = [1 2 3];

我想创建这些矩阵:

b = [1 1 1 
     1 1 1
     2 2 2
     2 2 2
     3 3 3
     3 3 3]; 

c = [1 2 3 1 2 3
     1 2 3 1 2 3];

如何使用ones执行此操作?有没有更快的方法?

在我的代码中,要复制的向量更大,而且我必须对for循环中的许多向量执行此操作。所以我正在寻找一种更快的方式。

如果要复制矩阵怎么样?例如:

d = [1 2 3
     4 5 6];

我希望:

e = [1 2 3 1 2 3
     4 5 6 4 5 6
     1 2 3 1 2 3
     4 5 6 4 5 6];

2 个答案:

答案 0 :(得分:1)

cerepmat的简单案例。 b不同,最常见的建议是使用kron(a', ones(2,3)),但这里有一些替代方案:A similar function to R's rep in Matlab

根据该链接中的许多答案,最快的可能是

reshape(repmat(a, 6, 1), 3, 6)'

答案 1 :(得分:0)

你可以用一种简单而富有成效的方式来做到这一点:

  

d = [1 2 3;        4 5 6];

     

while(!(STOP_CONDITION_OCCURS))

     

d = [d d; d d];

     

端;