我有一个大小为myVel
的矩阵[1 501]
,意思是1行和501列。
我想扩展这个矩阵,使矩阵的大小为[N 501]
,其中N是任意数。
列中的每个值都必须相同(意味着第一列中的所有值都是,x,第二列中的所有值都是,y,依此类推)。 这意味着每一行都包含相同的值。
如何有效地实现这一目标?
答案 0 :(得分:2)
repmat
的情况下执行此操作,这是最简单的解决方案。因为这里没有这样的限制,我会推荐这种方法。基本上,您可以使用repmat
为您执行此操作。您可以保持列的数量相同,并且可以根据需要复制任意数量的行。换句话说:
myVelDup = repmat(myVel, N, 1);
示例:
myVel = [1 2 3 4 5 6];
N = 4;
myVelDup = repmat(myVel, N, 1);
输出:
>> myVel
myVel =
1 2 3 4 5 6
>> myVelDup
myVelDup =
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
通常,repmat
按以下方式调用:
out = repmat(in, M, N);
in
将是您想要重复的值的矩阵或向量,并且您希望将此M
次水平(行)和N
次垂直(列)复制。因此,对于您的情况,由于您有数组,因此您需要垂直复制此N
次,因此我们将第一个参数设置为N
。第二个参数,列保持不变,因此我们将其指定为1,因为我们不希望有任何重复...因此您在上面看到repmat
的调用。
有关repmat
的详情,请访问以下链接:http://www.mathworks.com/help/matlab/ref/repmat.html