MATLAB: How to split a [30x250x1000] array into 1,000-2D matrices

datadata acquisitiondatabasematlab function

Hello everyone,
I have a dataset of size 30x250x100. I need to feed this array into a function 1,000 times. This is the for loop that I am using for the job. Where data_class will be the 30x250x1000 input array and number_epoch 1000.
Here i am trying to create 1,000 epoch_seg variables. Each one with 30 by 250 matrices given the 1,000 but can't figure out how to update epoch_seg to contain each matrix for every time step.
function epoch = matrix_extractor(data_class,number_epochs)
data_class;
for k=1:number_epochs
epoch(:,:)=data_class(:,:,k);
epoch_seg[k]=epoch(:,:)
end;
end
Thank you!

Best Answer

Just use a simple cell array:
function epoch = matrix_extractor(data_class,number_epochs)
data_class;
C = cell(1,number_epochs);
for k = 1:number_epochs
C{k} = data_class(:,:,k);
end
end
Note that writing this is a waste of time: just use num2cell or mat2cell.
Note that there is likely little point to this anyway: it would be simpler to just access the original data array using indexing, rather than splitting up and duplicating that data in memory. Splitting up data rarely makes processing data easier.