Reshape - columnwise. any command to linewise?

help reshape
RESHAPE Reshape array.
RESHAPE(X,M,N) returns the M-by-N matrix whose elements are taken columnwise from X.
I need some way to turn a matrix linewise instead.

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 29 Nov. 2011

7 Stimmen

reshape(X.',M,N).'

8 Kommentare

Vasco
Vasco am 29 Nov. 2011
tytyty. =)
Giacomo Perantoni
Giacomo Perantoni am 21 Feb. 2019
The transpose operator may be expensive for a large matrix. Is there an alternative way to solve the original problem without the additional computational cost?
winkmal
winkmal am 14 Jan. 2020
Should M and N not be switched in your command?
Amir
Amir am 18 Feb. 2020
M and N should be switched to return the M-by-N matrix.
The command should be reshape(X.',N,M).'
Life saver!!! Thank you!
sohaib bhatti
sohaib bhatti am 30 Aug. 2021
How can the same be done if X is a 3d matrix?
Also, what if I want to reshape to a 3d matrix? Is there anyway to just work row major in matlab?
Loic -Hi btw ;-) - you could use permute for ND-array (there is also pagetranspose command more restrictive)
X=randi(9,[6 5])
X = 6×5
1 2 4 9 1 9 1 7 8 1 5 6 6 4 8 4 2 7 8 2 2 4 5 5 9 7 1 7 1 8
permute(reshape(X.',[size(X,2) 2 3]),[2 1 3])
ans =
ans(:,:,1) = 1 2 4 9 1 9 1 7 8 1 ans(:,:,2) = 5 6 6 4 8 4 2 7 8 2 ans(:,:,3) = 2 4 5 5 9 7 1 7 1 8

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by