放大矩阵重复其值

时间:2016-06-02 13:40:27

标签: matlab matrix remap

我需要将矩阵A放大到矩阵B,其大小为n的{​​{1}}倍。必须重复这些值,例如:

A尺寸2x3,A = 3,导致n尺寸6x9:

示例值:

B

结果:

A =  
1 2 3  
4 5 6  

在Matlab中实现这一目标的最快方法是什么?

2 个答案:

答案 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');