reshape 4-dimension array

5 visualizaciones (últimos 30 días)
Bill Greene
Bill Greene el 21 de Feb. de 2025
Editada: Matt J el 23 de Feb. de 2025
I have an array dimensioned A(m,m,M,M). I would like to "reshape" this so that each mxm block is in the correct position in a B(m*M,m*M) matrix where the correct position is indicated by the third and fourth indices.
Can someone show me a straightforward way to do this?

Respuesta aceptada

Stephen23
Stephen23 el 21 de Feb. de 2025
Editada: Stephen23 el 21 de Feb. de 2025
A = randi(9,3,3,5,5);
[~,M,~,N] = size(A);
B = permute(A,[1,3,2,4]);
B = reshape(B,[M*N,M*N])
B = 15×15
3 1 4 2 7 7 4 7 8 5 7 2 4 7 7 1 9 1 2 2 5 9 8 2 5 6 1 7 8 3 7 6 2 3 4 3 6 8 9 5 7 5 2 7 6 4 1 9 6 4 3 2 9 1 9 4 8 7 1 6 1 2 7 3 1 8 9 9 4 2 5 7 2 9 5 8 5 8 8 3 5 8 6 4 1 4 3 8 3 9 2 6 7 3 2 2 5 7 9 4 2 2 5 9 3 9 4 4 2 7 3 8 8 9 7 3 2 9 8 7 7 2 3 2 9 7 2 4 6 7 7 9 3 6 8 5 5 4 1 9 5 4 1 5 2 1 4 3 8 5
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Checking some random block:
X = 3;
Y = 5;
A(:,:,X,Y)
ans = 3×3
5 9 3 9 8 7 3 6 8
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
B(...
((X-1)*M+1):(X*M),...
((Y-1)*M+1):(Y*M))
ans = 3×3
5 9 3 9 8 7 3 6 8
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Más respuestas (1)

Matt J
Matt J el 23 de Feb. de 2025
Editada: Matt J el 23 de Feb. de 2025

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by