【问题标题】:make a matrix 'n' time bigger in matlab在matlab中使矩阵'n'时间变大
【发布时间】:2012-08-24 08:58:40
【问题描述】:
我有一个这样的矩阵
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
谢谢
【问题讨论】:
标签:
matlab
matrix-multiplication
【解决方案1】:
您可以使用克罗内克产品:
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
更多信息,您可以查看维基百科:
http://en.wikipedia.org/wiki/Kronecker_product
【解决方案2】:
这是我的解决方案:
%------------------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