reshape 4D matrix into 2D matrix

78 views (last 30 days)
Amine Ben Ayara
Amine Ben Ayara on 18 Oct 2016
Commented: James on 19 Oct 2016
Good morning Matlab, I have a 4D-Double matrix that has this dimension: (5*5*5*30) and I need to convert it into a 2D matrix, I suppose, so the new matrix will only have the 1st Column (:,1) from each five by five matrix stacked horizontally,so the new 2D matrix should be 25 by 30 (25*30) dimension, where each column (:,1:30) is basically extracted from the original matrix (5*5*5*30) matrix. To try to explain this a bit more, I have 30 of: five sets of (5by5) matrices, and I only need the information in the first column of each set of 5*5, hence (25 rows) and 30 columns. Can Someone pleaaaaase point me in the right direction? Thank you SO much! have a great day.

Answers (2)

James
James on 18 Oct 2016
Does this do what you're looking for?
reshape(squeeze(x(:,1,:,:)),25,30)
where x is your 5x5x5x30 matrix?
  2 Comments
Amine Ben Ayara
Amine Ben Ayara on 18 Oct 2016
hello James, Thank you so much for the help. It does look like what I need, which from what you wrote so far the output matrix is of dimension: 25 rows by 30 columns, right? I tried it and I got this error: Error using reshape To RESHAPE the number of elements must not change.
James
James on 19 Oct 2016
Try reshape(squeeze(x(:,1,:,:)),25,[]), and see what the final size of the matrix is.

Sign in to comment.


Walter Roberson
Walter Roberson on 18 Oct 2016
Possibly
reshape(M(:, 1, :, :), 25, 30)
Or
reshape( permute( M(:, 1, :, :), [3, 1, 4, 2]), 25, 30)
The difference is that for an A x B x C x D matrix the first would be (A*C) x D, but the second would be (C*A) x D different of elements
  2 Comments
Amine Ben Ayara
Amine Ben Ayara on 18 Oct 2016
Hello Walter, Thank you so much for the reply. I tried both methods and I got this: A=reshape(MNPr1_1to30(:, 1, :, :), 25, 30) ; Error using reshape To RESHAPE the number of elements must not change.
>> AAA=reshape( permute( MNPr1_1to30(:, 1, :, :), [3, 1, 4, 2]), 25, 30); Error using reshape To RESHAPE the number of elements must not change.
Walter Roberson
Walter Roberson on 18 Oct 2016
Please show size( MNPr1_1to30)

Sign in to comment.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!