MATLAB Answers

Splitting an array up

조회 수: 6(최근 30일)
Tim Johansson
Tim Johansson 19 Oct 2020
댓글: Tim Johansson 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

Tim Johansson
Tim Johansson 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

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

채택된 답변

Stephan
Stephan 19 Oct 2020
편집: Stephan 19 Oct 2020
use this before reshaping - it discards all data, you dont care about:
x = x(:,1:40*2048)

  댓글 수: 1

Tim Johansson
Tim Johansson 19 Oct 2020
Thanks!
no idea why i didnt think of this myself

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

추가 답변(2개)

Stephen Cobeldick
Stephen Cobeldick 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)]);

  댓글 수: 0

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


Rik
Rik 19 Oct 2020
편집: Rik 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

  댓글 수: 0

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

Community Treasure Hunt

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

Start Hunting!

Translated by