我有一个大小为m
乘以n
的变量A
。我想生成一个大小为m
乘以m*n
的B
变量,如下所示的示例。
A = [1 2 3;
4 5 6;
7 8 9]
应该得到的结果是
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]
有没有不使用循环的方法来实现这个?
m
和n
是变量。我有一个大小为m
乘以n
的变量A
。我想生成一个大小为m
乘以m*n
的B
变量,如下所示的示例。
A = [1 2 3;
4 5 6;
7 8 9]
应该得到的结果是
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]
m
和n
是变量。repmat
函数:
B = repmat(A,M,N)
可以创建一个大矩阵B,由A
复制M
行、N
列形成。矩阵B
的大小为[size(A,1)*M, size(A,2)*N]
。语句repmat(A,N)
可以创建一个N
行、N
列的平铺矩阵。A=A';
B=repmat(A(:)',3,1);
对于一般情况,可能有一个解决方案:
A_aux=reshape(A',1,size(A,1)*size(A,2));
B=repmat(A_aux,size(A,1),1);
正如@Nerea所提到的,Repmat确实是这里的解决方法。这个解决方案应该会给出与他相同的答案,但我个人认为它更加优雅:
B=repmat(reshape(A',1,[]),size(A,1),1);
bsxfun
非常好玩! - Shaibsxfun
的使用方法! :-) - Luis Mendo无 repmat
[m n] = size(A);
B = ones(m,1) * reshape( A.', 1, [] );
A=rand(2)
时输出应该是什么。 - Dennis Jaheruddin