我有一个向量,我想在行和列方向上复制它的元素。我发现使用ones
内置函数比m文件函数repmat
和kron
更快。我已经看到了一些在一个方向上复制矢量的例子,但是我无法在两个方向上找到它。
考虑以下示例:
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];
答案 0 :(得分:1)
c
和e
是repmat
的简单案例。 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];
端;
等