Effacer les filtres
Effacer les filtres

Matlab reshape in 3D

11 vues (au cours des 30 derniers jours)
2one
2one le 20 Oct 2015
Commenté : 2one le 20 Oct 2015
I have a 119 x 49 x 27 (yxz) matrix (A) which is a stack of 27 blocks which make up a larger 2D image. I know that the larger 2D image has 3 x 9 (yx) =27 blocks. I am trying to 'stitch' together the 27 blocks to make the larger image. So far I've got:
B = reshape(A,49*9,119*3);
It generates a 2D matrix B (441 x 357) but is not correct.
  1 commentaire
2one
2one le 20 Oct 2015
it seems that the order than it joins the 27 blocks together is incorrect.

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 20 Oct 2015
I'm not sure it can be done with reshape and permute alone. Temporarilly using a cell array, it's very easy:
A = permute(repmat(1:27, [119 1 27]), [1 3 2]); %demo matrix
B = num2cell(A, [1 2]); %split the stack into a cell array
B = reshape(B, 3, 9); %reshape the tiles into their final position. You may need to transpose the reshape
B = cell2mat(B); %convert to matrix
  1 commentaire
2one
2one le 20 Oct 2015
Thanks! works beautifully!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by