如何在MATLAB中扩展矩阵的行,有效地填充第一行值的添加行

时间:2014-07-16 20:04:40

标签: matlab matrix

我有一个大小为myVel的矩阵[1 501],意思是1行和501列。 我想扩展这个矩阵,使矩阵的大小为[N 501],其中N是任意数。

列中的每个值都必须相同(意味着第一列中的所有值都是,x,第二列中的所有值都是,y,依此类推)。 这意味着每一行都包含相同的值。

如何有效地实现这一目标?

1 个答案:

答案 0 :(得分:2)

Divakar的解决方案是一种方法,他引用的链接显示了复制数组的一些好方法。但是,该帖子要求在没有内置函数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