我需要将矩阵A
放大到矩阵B
,其大小为n
的{{1}}倍。必须重复这些值,例如:
A
尺寸2x3,A
= 3,导致n
尺寸6x9:
示例值:
B
结果:
A =
1 2 3
4 5 6
在Matlab中实现这一目标的最快方法是什么?
答案 0 :(得分:4)
还有Kronecker Tensor产品(kron)功能:
n = 3;
B = kron(A,ones(n));
B =
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
答案 1 :(得分:2)
如果您有图像处理工具箱,则可以使用imresize
和最近邻插值轻松完成此操作。
A = [1 2 3; 4 5 6];
% Repeat each element 3 times in each direction
B = imresize(A, 3, 'nearest');
% 1 1 1 2 2 2 3 3 3
% 1 1 1 2 2 2 3 3 3
% 1 1 1 2 2 2 3 3 3
% 4 4 4 5 5 5 6 6 6
% 4 4 4 5 5 5 6 6 6
% 4 4 4 5 5 5 6 6 6
如果您没有图像处理工具箱,可以使用interp2
和最近邻插值来做类似的事情。
scaleFactor = 3;
[xx,yy] = meshgrid(linspace(1, size(A, 2), size(A, 2) * scaleFactor), ...
linspace(1, size(A, 1), size(A, 1) * scaleFactor));
B = interp2(A, xx, yy, 'nearest');