重复矩阵的每一行

Meh*_*r81 3 matlab

我有A大小m的变量n.我要生成B大小mm*n,比如下面的例子.例:

A = [1 2 3;
     4 5 6;
     7 8 9]
Run Code Online (Sandbox Code Playgroud)

应该结果

B = [1 2 3 4 5 6 7 8 9;
     1 2 3 4 5 6 7 8 9;
     1 2 3 4 5 6 7 8 9]
Run Code Online (Sandbox Code Playgroud)

没有使用循环有没有办法做到这一点?m并且n是可变的.

Ner*_*uez 6

你应该使用repmatMatlab功能:

B = repmat(A,M,N)创建由一个大矩阵B M-by- N 的拷贝平铺A.大小B[size(A,1)*M, size(A,2)*N].该语句 repmat(A,N)创建一个N-by- N平铺.

对于您的具体情况,一个解决方案可能是

A=A';
B=repmat(A(:)',3,1);
Run Code Online (Sandbox Code Playgroud)

对于一般情况,一种解决方案可能是:

A_aux=reshape(A',1,size(A,1)*size(A,2));
B=repmat(A_aux,size(A,1),1); 
Run Code Online (Sandbox Code Playgroud)