How can I divide a dataset into trials using a specific delimiter?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
samy rima
el 18 de Jun. de 2015
Comentada: samy rima
el 30 de Jun. de 2015
Hello,
I have a dataset of eye-tracking data that looks like so:
Time X Y
192 15 NaN
499 609 519
499 608 519
. . .
. . .
. . .
1200 800 NaN
1201 750 600
. . .
. . .
. . .
2000 792 NaN
All lines between 2 consecutive NaNs correspond to a trial, I would like to create a cell array where each cell contains all the rows from one trial. Can you help me on how to procede?
Thank you
0 comentarios
Respuesta aceptada
Walter Roberson
el 18 de Jun. de 2015
nanpos = find(isnan(YourData(:,3))]);
nanruns = diff([1 nanpos size(Yourdata,1)]);
blocks = cell2mat(YourData, nanruns, size(YourData,2));
blocks( cellfun(@isempty, blocks) ) = [];
Each of the blocks in the cell array will now start with a NaN entry, except in the case where the first entry in the array did not have a NaN, in which case the first block will include all the entries before the first NaN. Only the first block has that possibility.
If the last entry in the array is a NaN entry then the last block will be that entry by itself. I did it this way, instead of deleting the NaN, in case the NaN entry has some useful information you want to extract.
Más respuestas (0)
Ver también
Categorías
Más información sobre String en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!