如何在MATLAB中将2X2矩阵转换为4X4矩阵?

anu*_*hav 4 matlab tiling matrix repeat

我需要一些帮助,以下列方式将2X2矩阵转换为4X4矩阵:

A = [2 6;
     8 4]
Run Code Online (Sandbox Code Playgroud)

应成为:

B = [2 2 6 6;
     2 2 6 6;
     8 8 4 4;
     8 8 4 4]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

gno*_*ice 23

在较新版本的MATLAB(R2015a及更高版本)中,最简单的方法是使用以下repelem功能:

B = repelem(A, 2, 2);
Run Code Online (Sandbox Code Playgroud)

对于旧版本,替代其他(主要)基于索引的解决方案的简短替代方法是使用这些函数kronones:

>> A = [2 6; 8 4];
>> B = kron(A, ones(2))

B =

     2     2     6     6
     2     2     6     6
     8     8     4     4
     8     8     4     4
Run Code Online (Sandbox Code Playgroud)


Mar*_*ijn 12

可以比Jason的解决方案更容易完成:

B = A([1 1 2 2], :);  % replicate the rows
B = B(:, [1 1 2 2]);  % replicate the columns
Run Code Online (Sandbox Code Playgroud)

  • 单线:A = [2 6; 8 4]; B = A([1 1 2 2],[1 1 2 2]); (3认同)

Edr*_*ric 9

这是另一个解决方案:

A = [2 6; 8 4];
B = A( ceil( 0.5:0.5:end ), ceil( 0.5:0.5:end ) );
Run Code Online (Sandbox Code Playgroud)

它使用索引来完成所有事情,而不依赖于A的大小或形状.

  • 那很奇怪!不知何故,"end"关键字知道矩阵A,即使它是ceil()的参数.我不知道它是如何工作的,但确实如此. (4认同)