split a n*m-by-1 vector into n m-by-1 vectors
2 views (last 30 days)
Show older comments
I would like to split a m*n-by-1 vector into smaller ones, e.g. m-by-1. I have tried to think of an efficient way but i have not.
Any ideas?
Thank you.
0 Comments
Accepted Answer
Star Strider
on 14 Mar 2014
I suggest reshape:
A=[1; 2; 3; 4; 5; 6; 7; 8];
B = reshape(A,2,4)
The columns of B are your 2x1 vectors:
B =
1.0000e+000 3.0000e+000 5.0000e+000 7.0000e+000
2.0000e+000 4.0000e+000 6.0000e+000 8.0000e+000
More Answers (2)
Benjamin Avants
on 14 Mar 2014
I think the easiest method uses num2cell:
myArray = ones(3,4,1);
myCell = num2cell(myArray,1)
ans =
[3x1 double] [3x1 double] [3x1 double] [3x1 double]
You then have a 4 element cell array of 3x1 numerical arrays. Not sure if that's what you're looking for, but perhaps its a step in the right direction. The second parameter of num2cell determines which dimension is split into cells. Making that argument a 2 would yield a 3 element cell array of 4x1 numerical arrays.
Joseph Cheng
on 14 Mar 2014
How about putting it into the 3rd dimension? A=reshape(A,2,1,4) then you can reference A(:,:,1) to A(:,:,4) will be the smaller ones?
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!