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)
对于旧版本,替代其他(主要)基于索引的解决方案的简短替代方法是使用这些函数kron和ones:
>> 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( ceil( 0.5:0.5:end ), ceil( 0.5:0.5:end ) );
Run Code Online (Sandbox Code Playgroud)
它使用索引来完成所有事情,而不依赖于A的大小或形状.