放大矩阵重复其值
Enlarge matrix repeating its values
我需要将矩阵 A
扩大到矩阵 B
,其大小是 A
的 n
倍。值必须重复,例如:
A
尺寸 2x3,n
= 3,导致 B
尺寸 6x9:
示例值:
A =
1 2 3
4 5 6
结果:
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
在 Matlab 中实现该目标的最快方法是什么?
如果您有图像处理工具箱,您可以使用 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');
还有克罗内克张量积(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
我需要将矩阵 A
扩大到矩阵 B
,其大小是 A
的 n
倍。值必须重复,例如:
A
尺寸 2x3,n
= 3,导致 B
尺寸 6x9:
示例值:
A =
1 2 3
4 5 6
结果:
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
在 Matlab 中实现该目标的最快方法是什么?
如果您有图像处理工具箱,您可以使用 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');
还有克罗内克张量积(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