MATLAB Answers

how to use reshape ?

6 views (last 30 days)
pruth
pruth on 3 Jul 2020
Commented: pruth on 6 Jul 2020
I have a matrix with - 23043864x3 double.
i want to split this matrix in to 339 rows using reshape.
So it wil becaome - 339 x (something) double.
any help would be apriciated !
thank you

  2 Comments

KSSV
KSSV on 3 Jul 2020
If a is your array..
b = reshape(a,339,[]) ;
this is what you want?
pruth
pruth on 6 Jul 2020
yess. thank you !!! it works !
i tried this before but without using comma. that is why got the error.

Sign in to comment.

Accepted Answer

Gifari Zulkarnaen
Gifari Zulkarnaen on 3 Jul 2020
try this:
B = reshape(A,339,[]); % A is the original matrix, B is the reshaped matrix

  1 Comment

pruth
pruth on 6 Jul 2020
worked !! thanks !

Sign in to comment.

More Answers (2)

John D'Errico
John D'Errico on 3 Jul 2020
Edited: John D'Errico on 3 Jul 2020
The good thing about reshape is IF you put in an empty argument, then it figures out how many columns you will need.
But first, reshape will fail here, if the number of elements in your array is not an integer mutiple of 339.
(23043864*3)/339
ans =
203928
So the desired reshape will not fail.
However, you need not compute the number of columns yourself.
B = reshape(A,339,[]);
So the use of empty brackets tells reshape to figure out how many columns would have been necessary.
Finally, this even works to turn the matrix into a 3-dimensional matrix.
A = rand(23043864,3);
B = reshape(A,339,[],3);
size(B)
ans =
339 67976 3
As you should see, I never needed to compute the number of columns. Let reshape do the thinking for you.

  1 Comment

pruth
pruth on 6 Jul 2020
thank you for the information !! I appreciate !

Sign in to comment.


Alan Stevens
Alan Stevens on 3 Jul 2020
If A is your 23043864x3 matrix, then
B = reshape(A, 339, 203928);
should work. Of course, you could simply use A where I've put B above if you no longer need the original A.

  0 Comments

Sign in to comment.


Translated by