Splitting an array up

조회 수: 2 (최근 30일)
Tim Johansson
Tim Johansson 2020년 10월 19일
댓글: Tim Johansson 2020년 10월 19일
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 2020년 10월 19일
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 2020년 10월 19일
편집: Stephan 2020년 10월 19일
use this before reshaping - it discards all data, you dont care about:
x = x(:,1:40*2048)
  댓글 수: 1
Tim Johansson
Tim Johansson 2020년 10월 19일
Thanks!
no idea why i didnt think of this myself

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

추가 답변 (2개)

Stephen23
Stephen23 2020년 10월 19일
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 2020년 10월 19일
편집: Rik 2020년 10월 19일
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

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by