Splitting an array up

1 vue (au cours des 30 derniers jours)
Tim Johansson
Tim Johansson le 19 Oct 2020
Commenté : Tim Johansson le 19 Oct 2020
Hello,
i have a 64x92690 EEG dataset that i want to split into 40 parts of 64x2048.
As 2048 times 40 isen't 92690, i've been having trouble with the reshape function.
C = num2cell(reshape(x, 2048, 64, 1);
The excess amount of data i dont really care about.
Any suggestions would help
Thanks in advaced!
  1 commentaire
Tim Johansson
Tim Johansson le 19 Oct 2020
Thanks to all that answered!
i ended up using
x = x(:,1:40*2048)
to simply change the data length and then use reshape, as that is a function im familliar with

Connectez-vous pour commenter.

Réponse acceptée

Stephan
Stephan le 19 Oct 2020
Modifié(e) : Stephan le 19 Oct 2020
use this before reshaping - it discards all data, you dont care about:
x = x(:,1:40*2048)
  1 commentaire
Tim Johansson
Tim Johansson le 19 Oct 2020
Thanks!
no idea why i didnt think of this myself

Connectez-vous pour commenter.

Plus de réponses (2)

Stephen23
Stephen23 le 19 Oct 2020
Just use mat2cell, no need for reshape:
>> M = rand(64,92690); % fake data
>> N = 2048;
>> S = size(M);
>> V = repmat(N,1,fix(S(2)/N));
>> C = mat2cell(M,S(1),[V,mod(S(2),N)]);

Rik
Rik le 19 Oct 2020
Modifié(e) : Rik le 19 Oct 2020
You can modify the row indices you feed to mat2cell:
data=rand(64,92690);%generate random data
div=2048;
c=div*ones(1,ceil(size(data,2)/div));
c(end)=c(end)-(sum(c)-size(data,2));%trim last block
split=mat2cell(data,size(data,1),c);
%split is a 1x46 cell array, with the last cell containing fewer elements if the data doesn't fit

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by