How to turn a large array into multiple smaller arrays

9 visualizzazioni (ultimi 30 giorni)
Lori
Lori il 12 Ago 2012
Commentato: k il 17 Lug 2020
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 Commento
Oleg Komarov
Oleg Komarov il 13 Ago 2012
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.

Accedi per commentare.

Risposte (3)

Wayne King
Wayne King il 12 Ago 2012
Modificato: Wayne King il 12 Ago 2012
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 Commento
k
k il 17 Lug 2020
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()?

Accedi per commentare.


Azzi Abdelmalek
Azzi Abdelmalek il 12 Ago 2012
Modificato: Azzi Abdelmalek il 13 Ago 2012
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

Andrei Bobrov
Andrei Bobrov il 13 Ago 2012
out1 = reshape(yourmatrix,size(yourmatrix,1),2,[]);
or
out2 = mat2cell(yourmatrix,size(yourmatrix,1),2*ones(size(yourmatrix,2)/2,1));

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by