split a n*m-by-1 vector into n m-by-1 vectors

조회 수: 5 (최근 30일)
jimaras
jimaras 2014년 3월 14일
댓글: Star Strider 2014년 3월 14일
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.

채택된 답변

Star Strider
Star Strider 2014년 3월 14일
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
  댓글 수: 2
jimaras
jimaras 2014년 3월 14일
Exactly what I wanted. Thank you!
Star Strider
Star Strider 2014년 3월 14일
My pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Benjamin Avants
Benjamin Avants 2014년 3월 14일
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.
  댓글 수: 1
jimaras
jimaras 2014년 3월 14일
Basically, no. Maybe I didn't post the question correctly. I have the following vector:
A=[1; 2; 3; 4; 5; 6; 7; 8]
and I want to split it into 4 smaller ones (2x1) how can I do this.
P.s. Number are chosen randomly.

댓글을 달려면 로그인하십시오.


Joseph Cheng
Joseph Cheng 2014년 3월 14일
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?

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by