制作一个矩阵';n';matlab中的时间变大

制作一个矩阵';n';matlab中的时间变大,matlab,matrix-multiplication,Matlab,Matrix Multiplication,我有一个这样的矩阵 1 2 3 4 2 3 4 5 3 4 5 6 在matlab中是否有任何函数可以使行n次,列m次 我的意思是,例如,对于n=2和m=3,结果是: 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 2 2 2 3 3 3 4 4 4 5 5 5 2 2 2 3 3 3 4 4 4 5 5 5 3 3 3 4 4 4 5 5 5 6 6 6 3 3 3 4 4 4 5 5 5 6 6 6 谢谢您可以使用krone

我有一个这样的矩阵

1 2 3 4 
2 3 4 5
3 4 5 6 
在matlab中是否有任何函数可以使行n次,列m次 我的意思是,例如,对于n=2和m=3,结果是:

1 1 1 2 2 2 3 3 3 4 4 4 
1 1 1 2 2 2 3 3 3 4 4 4 
2 2 2 3 3 3 4 4 4 5 5 5 
2 2 2 3 3 3 4 4 4 5 5 5 
3 3 3 4 4 4 5 5 5 6 6 6 
3 3 3 4 4 4 5 5 5 6 6 6 

谢谢

您可以使用kronecker产品:

 A=[1 2 3 4;5 6 7 8;9 10 11 12];
 kron(A,ones(2,3))
ans =
     1     1     1     2     2     2     3     3     3     4     4     4
     1     1     1     2     2     2     3     3     3     4     4     4
     5     5     5     6     6     6     7     7     7     8     8     8
     5     5     5     6     6     6     7     7     7     8     8     8
     9     9     9    10    10    10    11    11    11    12    12    12
     9     9     9    10    10    10    11    11    11    12    12    12
有关更多信息,请访问维基百科:

以下是我的解决方案:

%------------------data-----------------
>> mat = [1 2 3 4;2 3 4 5;3 4 5 6]
mat =
     1     2     3     4
     2     3     4     5
     3     4     5     6
>> [m,n] = deal(3,2)
m =
     3
n =
     2
%----------------solution----------------
>> col = meshgrid(1:size(mat,2),1:m);
>> row = meshgrid(1:size(mat,1),1:n);
>> mat(row,col)
ans =
     1     1     1     2     2     2     3     3     3     4     4     4
     1     1     1     2     2     2     3     3     3     4     4     4
     2     2     2     3     3     3     4     4     4     5     5     5
     2     2     2     3     3     3     4     4     4     5     5     5
     3     3     3     4     4     4     5     5     5     6     6     6
     3     3     3     4     4     4     5     5     5     6     6     6