How to turn a large array into multiple smaller arrays
조회 수: 13 (최근 30일)
이전 댓글 표시
Hi,
I have an array that has 31 rows and 1518 columns. I'm trying to figure out a quick way to turn that array into 759 arrays that are 31 rows and 2 columns. I want to take the first two columns, then the next two columns, etc. I was wondering this there was a way to do this in a loop, but was unsure if you could create and name new arrays in a loop. Any help would be much appreciated!
Thanks,
Lori
댓글 수: 1
Oleg Komarov
2012년 8월 13일
Please, do not post duplicate questions. Also, do not create incremental variables by splitting your array. It's a design suicide and bad programming practice.
답변 (3개)
Wayne King
2012년 8월 12일
편집: Wayne King
2012년 8월 12일
I think you want to store the separate matrices in a cell array rather than having 759 separate matrices, right? I mean you can always just access each of the 31x2 matrices from the cell array
X = randn(31,1518);
k = 1;
for nn = 1:2:1518-1
Y{k} = X(:,nn:nn+1);
k = k+1;
end
Now you can access each of the 31x2 matrices as
Y{1}, Y{2}, etc.
댓글 수: 1
k
2020년 7월 17일
Hi! Is there a way to add to this loop a way for the program to plot every Y{} matrix, potentially in the same layout via tiledlayout()?
Azzi Abdelmalek
2012년 8월 12일
편집: Azzi Abdelmalek
2012년 8월 13일
A=rand(31,1518); %example
B=reshape(A,31,2,1518/2)
for k=1: 1518/2
out.(sprintf('A%d',k))=B(:,:,k)
end
the first array is
out.A1,
thee second is
out.A2 ,
the last
out.A759
댓글 수: 0
Andrei Bobrov
2012년 8월 13일
out1 = reshape(yourmatrix,size(yourmatrix,1),2,[]);
or
out2 = mat2cell(yourmatrix,size(yourmatrix,1),2*ones(size(yourmatrix,2)/2,1));
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!