Efficient way to divide array into tiles

4 visualizaciones (últimos 30 días)
Yi-xiao Liu
Yi-xiao Liu el 31 de Oct. de 2022
Comentada: Yi-xiao Liu el 2 de Nov. de 2022
I use the following code to divide array into tiles
n=2;nrow=3;ncol=3;
A=reshape(1:36,6,6)
A = 6×6
1 7 13 19 25 31 2 8 14 20 26 32 3 9 15 21 27 33 4 10 16 22 28 34 5 11 17 23 29 35 6 12 18 24 30 36
A=mat2cell(A,zeros(nrow,1)+n,zeros(ncol,1)+n);
A=reshape(A,1,[]);
A=cellfun(@(x) x(:),A,"UniformOutput",false);
A=cell2mat(A)
A = 4×9
1 3 5 13 15 17 25 27 29 2 4 6 14 16 18 26 28 30 7 9 11 19 21 23 31 33 35 8 10 12 20 22 24 32 34 36
Now each column contains the element of each 2-by-2 tile.
The problem is when A is large and n is small the use of cell array creates significant overhead. Is there a more efficient way to do this?

Respuesta aceptada

Matt J
Matt J el 31 de Oct. de 2022
Editada: Matt J el 31 de Oct. de 2022

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by